Hướng dẫn python pyc file - tệp pyc python

Bạn đang tự hỏi sự khác biệt giữa các tệp Python .py và các tệp .pyc là gì? Bạn đến đúng chỗ rồi đấy.

Nội dung chính ShowShow

  • Các tệp .py và .pyc trong Python là gì?
  • Làm thế nào một tệp được biên dịch được tạo trong Python?
  • Các tệp được biên dịch được tạo ở đâu khi sử dụng Python 3?
  • Khi nào các tệp .pyc được cập nhật?
  • Bạn có thể xóa các tệp .pyc không?
  • Bạn có thể xóa các tệp .py bằng python 2 không?
  • Bạn có thể xóa các tệp .py với Python 3 không?
  • Sự kết luận
  • Bài viết liên quan:
  • Tại sao tệp .pyc được tạo trong Python?
  • Chúng ta có thể xóa các tệp .pyc không?
  • Tiện ích mở rộng PYC trong Python là gì?

Các tệp có phần mở rộng .Py chứa mã python có thể đọc được của con người. Mặt khác, các tệp .pyc chứa mã byte không thể đọc được của con người. Các bộ mở rộng .Py được biên dịch thành các tệp .PYC sau đó được xử lý bởi trình thông dịch Python.Files with .py extension are compiled into .pyc files that are then processed by the Python interpreter. Files with .py extension are compiled into .pyc files that are then processed by the Python interpreter.

Don Tiết lo lắng nếu điều này không hoàn toàn có ý nghĩa, chúng tôi sẽ trải qua một vài ví dụ sẽ làm cho mọi thứ rõ ràng.

Và tôi cũng sẽ chỉ cho bạn khi việc biên dịch các tệp .py vào các tệp .pyc xảy ra.

Hãy để vào nó!

  • Các tệp .py và .pyc trong Python là gì?
  • Làm thế nào một tệp được biên dịch được tạo trong Python?
  • Các tệp được biên dịch được tạo ở đâu khi sử dụng Python 3?
  • Khi nào các tệp .pyc được cập nhật?
  • Bạn có thể xóa các tệp .pyc không?
  • Bạn có thể xóa các tệp .py bằng python 2 không?
  • Bạn có thể xóa các tệp .py với Python 3 không?
  • Sự kết luận

Các tệp .py và .pyc trong Python là gì?

Làm thế nào một tệp được biên dịch được tạo trong Python?

Các tệp được biên dịch được tạo ở đâu khi sử dụng Python 3?

Khi nào các tệp .pyc được cập nhật?

Bạn có thể xóa các tệp .pyc không?

Bạn có thể xóa các tệp .py bằng python 2 không? created when that module is imported.

Bạn có thể xóa các tệp .py với Python 3 không?: as a Python developer you will only make code changes to .py files.

Sự kết luận

Bài viết liên quan:

Tại sao tệp .pyc được tạo trong Python?app.py file contains code for the app module and in this example it contains a single function:

def get_full_name[first_name, last_name]:
    return "{} {}".format[first_name, last_name]

Chúng ta có thể xóa các tệp .pyc không?

Tiện ích mở rộng PYC trong Python là gì?

Các tệp có phần mở rộng .Py chứa mã python có thể đọc được của con người. Mặt khác, các tệp .pyc chứa mã byte không thể đọc được của con người. Các bộ mở rộng .Py được biên dịch thành các tệp .PYC sau đó được xử lý bởi trình thông dịch Python.Files with .py extension are compiled into .pyc files that are then processed by the Python interpreter.

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 

Don Tiết lo lắng nếu điều này không hoàn toàn có ý nghĩa, chúng tôi sẽ trải qua một vài ví dụ sẽ làm cho mọi thứ rõ ràng.

Và tôi cũng sẽ chỉ cho bạn khi việc biên dịch các tệp .py vào các tệp .pyc xảy ra.app.pyc has been created:

Hãy để vào nó!

Bạn có thể xóa các tệp .py bằng python 2 không?created when that module is imported.

$ cat app.pyc
?
d?ZdS[cCsdj||?S[Ns{} {}[tformat[t
get_full_namesN[R[[[sapp.pyt%

Bạn có thể xóa các tệp .py với Python 3 không?: as a Python developer you will only make code changes to .py files.bytecode.

Các tệp có phần mở rộng .Py là các tệp nguồn Python, các tệp trong đó bạn viết mã Python của mình.

Mã python bạn viết trong các tệp .py không được thực thi ở cùng định dạng bởi máy mà bạn chạy mã của mình.app.py file contains code for the app module and in this example it contains a single function:

Làm thế nào một tệp được biên dịch được tạo trong Python?

Các tệp được biên dịch được tạo ở đâu khi sử dụng Python 3?

Khi nào các tệp .pyc được cập nhật?

Bạn có thể xóa các tệp .pyc không?

Bạn có thể xóa các tệp .py bằng python 2 không?

Bạn có thể xóa các tệp .py với Python 3 không?

Sự kết luậnpython_implementation[] function.

Bài viết liên quan:

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.python_implementation[]
'CPython'

Tại sao tệp .pyc được tạo trong Python?

Chúng ta có thể xóa các tệp .pyc không?

Python 3.8.2 [default, Dec 21 2020, 15:06:03] 
[Clang 12.0.0 [clang-1200.0.32.29]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.python_implementation[]
'CPython'

Tiện ích mở rộng PYC trong Python là gì?

Các tệp được biên dịch được tạo ở đâu khi sử dụng Python 3?

Khi nào các tệp .pyc được cập nhật?

Các tệp có phần mở rộng .Py chứa mã python có thể đọc được của con người. Mặt khác, các tệp .pyc chứa mã byte không thể đọc được của con người. Các bộ mở rộng .Py được biên dịch thành các tệp .PYC sau đó được xử lý bởi trình thông dịch Python.Files with .py extension are compiled into .pyc files that are then processed by the Python interpreter.: Considering that Python 2 is very old you should really be using Python 3. In this tutorial I’m also using Python 2 to show you the difference in behaviour between the two versions of Python.

Bạn có thể xóa các tệp .py bằng python 2 không?

Bạn có thể xóa các tệp .py với Python 3 không?

Sự kết luận

$ rm app.pyc
$ python3
Python 3.8.2 [default, Dec 21 2020, 15:06:03] 
[Clang 12.0.0 [clang-1200.0.32.29]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>>

Bài viết liên quan:

>>> exit[]
$ ls -al app*
-rw-r--r--  1 codefather  wheel  91 Mar 20 00:11 app.py

Tại sao tệp .pyc được tạo trong Python?

Trước khi được thực thi, mã trong các tệp .py được biên dịch thành các tệp .pyc.

Why?!?

Hãy tưởng tượng quá trình biên dịch như một bản dịch từ ngôn ngữ này sang ngôn ngữ khác.

Các tệp có tiện ích mở rộng .PYC là kết quả của việc biên dịch các tệp với tiện ích mở rộng .py. Tệp .pyc cho một mô -đun Python đã cho được tự động phát hành khi mô -đun đó được nhập.

Lưu ý: Là một nhà phát triển Python, bạn sẽ chỉ thực hiện các thay đổi mã thành các tệp .py.

Để xem sự khác biệt giữa hai loại tệp, hãy tạo ra một mô -đun Python đầu tiên trong một tệp có tên App.Py.

Python 3.8.2 [default, Dec 21 2020, 15:06:03] 
[Clang 12.0.0 [clang-1200.0.32.29]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> dir[app]
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'get_full_name']

Đối với tất cả các ví dụ trong hướng dẫn này, tôi đã tạo app.py bên trong thư mục/var/tmp/.dir[] built-in function to get a list of module attributes we can access.dir[] built-in function to get a list of module attributes we can access.

Tệp app.py chứa mã cho mô -đun ứng dụng và trong ví dụ này, nó chứa một hàm duy nhất:__cached__.__cached__.

Hãy để kiểm tra giá trị của nó

>>> app.__cached__
'/Users/codefather/Library/Caches/com.apple.python/private/var/tmp/app.cpython-38.pyc'

Lưu ý: Như đã đề cập trước đây cho tất cả các ví dụ trong hướng dẫn này, tôi đã tạo app.py bên trong thư mục/var/tmp/.: as mentioned before for all the examples in this tutorial I have created app.py inside the /var/tmp/ directory.: as mentioned before for all the examples in this tutorial I have created app.py inside the /var/tmp/ directory.

Thuộc tính __cached__ cho mô -đun Python là đường dẫn của phiên bản biên dịch của mô -đun đó. Việc bổ sung thuộc tính này là một phần của PEP 3147.The addition of this attribute was aproposal part of PEP 3147. The addition of this attribute was a proposal part of PEP 3147.

Lưu ý: PEP là viết tắt của các đề xuất tăng cường Python.: PEP stands for Python Enhancement Proposals.: PEP stands for Python Enhancement Proposals.

Bạn có thể thấy rằng định dạng của tên của tệp .pyc đã thay đổi so với Python 2. Khi sử dụng Python 3, tên tệp cũng chứa việc triển khai Python [CPython] và phiên bản Python [38].

Đường dẫn tệp phụ thuộc vào hệ điều hành của bạn.

Hãy để xác minh rằng tệp app.cpython-38.pyc thực sự nằm trong thư mục đó.

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
0

Chúng tôi đã xác nhận rằng tệp được biên dịch nằm trong thư mục đó.

Sẽ khó khăn hơn để tìm thấy con đường này mà không cần lấy giá trị của thuộc tính __cached__!

Khi nào các tệp .pyc được cập nhật?

Hãy để tiếp tục làm việc trên ví dụ trong phần trước.

Chúng tôi muốn hiểu khi nào các tệp .pyc được cập nhật.

Hạ lại shell Python 3, nhập mô -đun ứng dụng và kiểm tra xem có gì thay đổi với tệp .pyc không:

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
1

Như bạn có thể thấy từ đầu ra của lệnh LS FileSize và ngày sửa đổi cuối cùng cho App.Cpython-38.PyC không thay đổi.filesize and last modify date for app.cpython-38.pyc have not changed.filesize and last modify date for app.cpython-38.pyc have not changed.

Bây giờ sửa đổi hàm python được xác định trong app.py và sửa đổi tên của hàm từ get_full_name [] thành get_user_full_name:

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
2

Mở vỏ Python 3, nhập mô -đun ứng dụng và thoát khỏi vỏ.

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
3

Xác minh xem có bất cứ điều gì đã thay đổi với tệp được biên dịch ứng dụng.cpython-38.pyc:

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
4

Cả FileSize và ngày sửa đổi cuối cùng đã thay đổi.filesize and last modify date have changed.filesize and last modify date have changed.

Điều đó bởi vì trình thông dịch Python đã phát hiện ra một thay đổi trong mô -đun app.py và đã biên dịch mã thành một tệp .pyc mới.

Python tái tạo tệp .pyc cho một mô -đun nhất định khi mô -đun đó được sửa đổi và được xem xét lại.

Bạn có thể xóa các tệp .pyc không?

Bạn có thể xóa các tệp .pyc, nếu bạn thực hiện điều đó và sau đó bạn nhập lại mô -đun đó, tệp .pyc liên quan đến mô -đun đó sẽ được tạo lại.

Ở đây bạn có thể thấy .pyc được tạo trước đó.

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
4

Hãy để xóa nó và nhập lại mô -đun ứng dụng

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
6

Python đã tạo lại tệp .pyc. Nó đã biên dịch lại tệp .py vào tệp .pyc này.

Bạn có thể xóa các tệp .py bằng python 2 không?

Đó là một điều thú vị

Hãy cùng cố gắng xóa tệp app.py, tệp chứa mã Python của chúng tôi.app.py file, the file that contains our Python code.app.py file, the file that contains our Python code.

Bạn nghĩ gì xảy ra nếu chúng ta cố gắng nhập mô -đun ứng dụng?

Hãy để bắt đầu với Python 2 và trước khi xóa tệp .py, hãy đảm bảo tệp .pyc tồn tại trong cùng một thư mục của tệp .py.Python 2 and before deleting the .py file make sure the .pyc file exists in the same directory of the .py file.Python 2 and before deleting the .py file make sure the .pyc file exists in the same directory of the .py file.

Nếu tệp .pyc không tồn tại, hãy mở Shell Python 2 và nhập mô -đun ứng dụng để tạo lại tệp .pyc.

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
7

Bây giờ xóa app.py và mở lại shell python 2 để nhập mô -đun ứng dụng.

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
8

Thật thú vị, sau khi xóa một tệp .py, trình thông dịch Python 2 không ném bất kỳ lỗi nào khi nhập mô -đun đó nếu một tệp .pyc cho mô -đun đó tồn tại.

Bạn có thể xóa các tệp .py với Python 3 không?

Hãy để tiếp tục ở nơi chúng tôi để lại trong phần trước, nơi chúng tôi đã thấy Python 2 hành xử như thế nào khi xóa một tệp .py.

Và bây giờ, hãy để sử dụng Python 3.Python 3.Python 3.

Tệp app.py không tồn tại trong thư mục hiện tại, /var /tmp, vì vậy chúng tôi chỉ có thể mở shell python 3 và cố gắng nhập mô -đun ứng dụng.

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
9

Chúng tôi lấy lại một số lỗi ma thuật xấu kỳ lạ trong ‘Ứng dụng.

Nó có nghĩa là gì?

Một kịch bản trong đó xảy ra lỗi số ma thuật xấu là khi Python 3 cố gắng tải tệp .pyc được biên dịch với Python 2.

Rõ ràng điều này đang xảy ra ở đây vì Python 3 tìm thấy một tệp .pyc trong thư mục hiện tại và nó cố gắng tải nó.

Hãy để loại bỏ tệp .pyc khỏi thư mục hiện tại và sau đó cố gắng nhập lại mô -đun ứng dụng.

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
90

Chúng tôi nhận được một mô -đun trở lại mặc dù thực tế là tệp .pyc vẫn tồn tại trong thư mục mà nó được tạo khi nhập mô -đun ứng dụng với Python 3 [xem đầu ra LS bên dưới].ModuleNotFoundError back despite the fact that the .pyc file still exists in the directory in which it was created when importing the app module with Python 3 [see ls output below].ModuleNotFoundError back despite the fact that the .pyc file still exists in the directory in which it was created when importing the app module with Python 3 [see ls output below].

$ python2

Python 2.7.16 [default, Dec 21 2020, 23:00:36] 
[GCC Apple LLVM 12.0.0 [clang-1200.0.30.4] [+internal-os, ptrauth-isa=sign+stri on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import app
>>> 
91

Sự kết luận

//youtu.be/xnqomkicok8well đã thực hiện!

Bây giờ bạn đã biết sự khác biệt là gì giữa các tệp .py và .pyc trong Python.

Bạn cũng biết các tệp .pyc đóng vai trò gì trong việc thực hiện các chương trình Python của bạn: chúng được tạo bằng cách biên dịch các tệp .py và sau đó chúng được giải thích.

Chúng tôi cũng đã thấy cách tổng hợp tệp .pyc thay đổi giữa Python 2 và Python 3.

Và nếu bạn chưa quen với Python, tôi khuyên bạn nên trải qua hướng dẫn bắt đầu mã hóa Python này.

Bài viết liên quan:

Tôi là một nhà lãnh đạo công nghệ, kỹ sư phần mềm và huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành một nhà phát triển siêu!

Tại sao tệp .pyc được tạo trong Python?

.Các tệp PYC được tạo bởi trình thông dịch Python khi một tệp .py được nhập.Chúng chứa "mã byte được biên dịch" của mô -đun/chương trình được nhập để "dịch" từ mã nguồn sang mã byte [chỉ cần thực hiện một lần] có thể được bỏ qua trên các lần nhập tiếp theo nếu.when a .py file is imported. They contain the "compiled bytecode" of the imported module/program so that the "translation" from source code to bytecode [which only needs to be done once] can be skipped on subsequent imports if the .when a . py file is imported. They contain the "compiled bytecode" of the imported module/program so that the "translation" from source code to bytecode [which only needs to be done once] can be skipped on subsequent imports if the .

Chúng ta có thể xóa các tệp .pyc không?

Các tập tin PYC từ một thư mục.Bạn có thể sử dụng lệnh Find [trên OS X và Linux] để xác định vị trí tất cả.Các tệp PYC, sau đó sử dụng tùy chọn xóa của nó để xóa chúng.Rõ ràng, điều này có thể được sử dụng cho bất kỳ loại tệp nào mà bạn muốn xóa, không chỉ.

Tiện ích mở rộng PYC trong Python là gì?

PYC: Đây là mã byte được biên dịch.Nếu bạn nhập một mô -đun, Python sẽ xây dựng một *.Tệp PYC chứa mã byte để làm cho nhập lại sau này dễ dàng hơn [và nhanh hơn].compiled bytecode. If you import a module, python will build a *. pyc file that contains the bytecode to make importing it again later easier [and faster].compiled bytecode. If you import a module, python will build a *. pyc file that contains the bytecode to make importing it again later easier [and faster].

Chủ Đề