Chạy tập lệnh python từ tập lệnh python khác có đối số

Đây không nhất thiết là một câu hỏi đơn giản. Nếu bạn đã quen với việc chạy các chương trình từ dòng lệnh Windows thì mọi thứ sẽ có vẻ rõ ràng;

Trừ khi bạn sử dụng một số loại môi trường phát triển tích hợp, nếu không thì cuối cùng bạn sẽ nhập các lệnh của Windows vào cái được gọi là “Cửa sổ nhắc lệnh”. Thông thường, bạn có thể tạo một cửa sổ như vậy từ thanh tìm kiếm của mình bằng cách tìm kiếm

D:\YourName\Projects\Python>
1. Bạn sẽ có thể nhận ra khi nào bạn đã khởi động một cửa sổ như vậy vì bạn sẽ thấy một “dấu nhắc lệnh” của Windows, thường giống như thế này

C:\>

Bức thư có thể khác và có thể có những thứ khác sau nó, vì vậy bạn có thể dễ dàng nhìn thấy một cái gì đó như

D:\YourName\Projects\Python>

tùy thuộc vào cách máy tính của bạn đã được thiết lập và những gì bạn đã làm gần đây với nó. Khi bạn đã bắt đầu một cửa sổ như vậy, bạn đã sẵn sàng để chạy các chương trình Python

Bạn cần nhận ra rằng các tập lệnh Python của bạn phải được xử lý bởi một chương trình khác có tên là trình thông dịch Python. Trình thông dịch đọc tập lệnh của bạn, biên dịch nó thành mã byte, sau đó thực thi mã byte để chạy chương trình của bạn. Vì vậy, làm thế nào để bạn sắp xếp trình thông dịch xử lý Python của bạn?

Trước tiên, bạn cần đảm bảo rằng cửa sổ lệnh của bạn nhận ra từ “py” là hướng dẫn để khởi động trình thông dịch. Nếu bạn đã mở một cửa sổ lệnh, bạn nên thử nhập lệnh

D:\YourName\Projects\Python>
2 và nhấn return

C:\Users\YourName> py

Sau đó, bạn sẽ thấy một cái gì đó như

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Bạn đã khởi động trình thông dịch ở “chế độ tương tác”. Điều đó có nghĩa là bạn có thể nhập các câu lệnh hoặc biểu thức Python một cách tương tác và để chúng được thực thi hoặc đánh giá trong khi chờ đợi. Đây là một trong những tính năng mạnh nhất của Python. Kiểm tra nó bằng cách nhập một vài biểu thức bạn chọn và xem kết quả

>>> print("Hello")
Hello
>>> "Hello" * 3
'HelloHelloHello'

Nhiều người sử dụng chế độ tương tác như một máy tính tiện lợi nhưng có khả năng lập trình cao. Khi bạn muốn kết thúc phiên Python tương tác của mình, hãy gọi hàm

D:\YourName\Projects\Python>
3 hoặc giữ phím Ctrl trong khi nhập Z, sau đó nhấn phím “Enter” để quay lại dấu nhắc lệnh Windows của bạn

Bạn cũng có thể thấy rằng mình có một mục trong menu Bắt đầu, chẳng hạn như Bắt đầu ‣ Chương trình ‣ Python 3. x ‣ Python (dòng lệnh) dẫn đến việc bạn nhìn thấy dấu nhắc

D:\YourName\Projects\Python>
4 trong một cửa sổ mới. Nếu vậy, cửa sổ sẽ biến mất sau khi bạn gọi hàm
D:\YourName\Projects\Python>
3 hoặc nhập ký tự Ctrl-Z; .

Bây giờ chúng ta biết lệnh

D:\YourName\Projects\Python>
2 đã được nhận dạng, bạn có thể cung cấp tập lệnh Python của mình cho lệnh đó. Bạn sẽ phải cung cấp đường dẫn tuyệt đối hoặc tương đối cho tập lệnh Python. Giả sử tập lệnh Python của bạn được đặt trong máy tính để bàn của bạn và được đặt tên là
D:\YourName\Projects\Python>
7 và dấu nhắc lệnh của bạn được mở độc đáo trong thư mục chính của bạn, vì vậy bạn sẽ thấy một cái gì đó tương tự như

C:\>
2

Vì vậy, bây giờ bạn sẽ yêu cầu lệnh

D:\YourName\Projects\Python>
2 cung cấp tập lệnh của bạn cho Python bằng cách nhập
D:\YourName\Projects\Python>
2, sau đó là đường dẫn tập lệnh của bạn

C:\>
5

Làm cách nào để làm cho tập lệnh Python có thể thực thi được?¶

Trên Windows, trình cài đặt Python tiêu chuẩn đã liên kết. phần mở rộng py với một loại tệp (Python. File) và cung cấp cho loại tệp đó một lệnh mở để chạy trình thông dịch (

C:\Users\YourName> py
0). Điều này là đủ để làm cho các tập lệnh có thể thực thi được từ dấu nhắc lệnh dưới dạng 'foo. py'. Nếu bạn muốn có thể thực thi tập lệnh bằng cách gõ đơn giản 'foo' mà không cần phần mở rộng, bạn cần thêm. py vào biến môi trường PATHEXT

Tại sao Python đôi khi mất quá nhiều thời gian để bắt đầu?¶

Thông thường Python khởi động rất nhanh trên Windows, nhưng thỉnh thoảng có báo cáo lỗi Python đột nhiên khởi động rất lâu. Điều này thậm chí còn khó hiểu hơn vì Python sẽ hoạt động tốt trên các hệ thống Windows khác có vẻ như được cấu hình giống hệt nhau

Sự cố có thể do cấu hình sai của phần mềm kiểm tra vi-rút trên máy gặp sự cố. Một số trình quét vi-rút đã được biết là giới thiệu chi phí khởi động ở hai bậc độ lớn khi trình quét được định cấu hình để giám sát tất cả các lần đọc từ hệ thống tệp. Hãy thử kiểm tra cấu hình của phần mềm quét vi-rút trên hệ thống của bạn để đảm bảo rằng chúng thực sự được cấu hình giống hệt nhau. McAfee, khi được định cấu hình để quét tất cả hoạt động đọc của hệ thống tệp, là một kẻ vi phạm cụ thể

Làm cách nào để tạo tệp thực thi từ tập lệnh Python?¶

Xem Làm cách nào để tạo tệp nhị phân độc lập từ tập lệnh Python? để biết danh sách các công cụ có thể được sử dụng để tạo tệp thực thi.

Tệp D:\YourName\Projects\Python> 0 có giống với tệp DLL không?¶

Đúng,. các tệp pyd là dll, nhưng có một vài điểm khác biệt. Nếu bạn có một DLL tên là

C:\Users\YourName> py
2, thì nó phải có hàm
C:\Users\YourName> py
3. Sau đó, bạn có thể viết Python "nhập foo" và Python sẽ tìm kiếm foo. pyd (cũng như foo. py, foo. pyc) và nếu nó tìm thấy, nó sẽ cố gắng gọi
C:\Users\YourName> py
3 để khởi tạo nó. Bạn không liên kết của bạn. exe với foo. lib, vì điều đó sẽ khiến Windows yêu cầu phải có DLL

Lưu ý rằng đường dẫn tìm kiếm cho foo. pyd là PYTHONPATH, không giống với đường dẫn mà Windows sử dụng để tìm kiếm foo. dll. Ngoài ra, foo. không cần phải có pyd để chạy chương trình của bạn, trong khi nếu bạn đã liên kết chương trình của mình với một dll, thì dll là bắt buộc. Tất nhiên, foo. pyd là bắt buộc nếu bạn muốn nói

C:\Users\YourName> py
5. Trong một DLL, liên kết được khai báo trong mã nguồn với
C:\Users\YourName> py
6. trong một. pyd, liên kết được xác định trong danh sách các chức năng có sẵn

Làm cách nào tôi có thể nhúng Python vào ứng dụng Windows?¶

Nhúng trình thông dịch Python vào ứng dụng Windows có thể được tóm tắt như sau

  1. Không xây dựng Python vào của bạn. tập tin exe trực tiếp. Trên Windows, Python phải là một DLL để xử lý việc nhập các mô-đun mà chính chúng là DLL. (Đây là sự thật không có giấy tờ quan trọng đầu tiên. ) Thay vào đó, liên kết tới

    C:\Users\YourName> py
    
    7; . NN là phiên bản Python, một số chẳng hạn như “33” cho Python 3. 3

    Bạn có thể liên kết với Python theo hai cách khác nhau. Liên kết thời gian tải có nghĩa là liên kết với

    C:\Users\YourName> py
    
    9, trong khi liên kết thời gian chạy có nghĩa là liên kết với
    C:\Users\YourName> py
    
    7. (Ghi chú chung.
    C:\Users\YourName> py
    
    9 được gọi là “lib nhập khẩu” tương ứng với
    C:\Users\YourName> py
    
    7. Nó chỉ định nghĩa các ký hiệu cho trình liên kết. )

    Liên kết thời gian chạy đơn giản hóa rất nhiều tùy chọn liên kết; . Mã của bạn phải tải

    C:\Users\YourName> py
    
    7 bằng quy trình
    Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
    4 của Windows. Mã này cũng phải sử dụng các quy trình truy cập và dữ liệu trong
    C:\Users\YourName> py
    
    7 (nghĩa là API C của Python) bằng cách sử dụng các con trỏ thu được từ quy trình
    Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
    6 của Windows. Macro có thể làm cho việc sử dụng các con trỏ này trong suốt đối với bất kỳ mã C nào gọi các quy trình trong API C của Python

  2. Nếu bạn sử dụng SWIG, bạn có thể dễ dàng tạo một “mô-đun mở rộng” Python để cung cấp dữ liệu và phương thức của ứng dụng cho Python. SWIG sẽ xử lý tất cả các chi tiết khó chịu cho bạn. Kết quả là mã C mà bạn liên kết vào. tập tin exe (. ) Bạn không phải tạo tệp DLL và điều này cũng đơn giản hóa việc liên kết

  3. SWIG sẽ tạo một hàm init (hàm C) có tên phụ thuộc vào tên của mô-đun mở rộng. Ví dụ: nếu tên của mô-đun là leo, hàm init sẽ được gọi là initleo(). Nếu bạn sử dụng các lớp bóng tối SWIG, thì hàm init sẽ được gọi là initleoc(). Điều này khởi tạo một lớp trợ giúp chủ yếu ẩn được sử dụng bởi lớp bóng tối

    Lý do bạn có thể liên kết mã C ở bước 2 với. exe là việc gọi hàm khởi tạo tương đương với việc nhập mô-đun vào Python. (Đây là sự thật quan trọng thứ hai không có giấy tờ. )

  4. Tóm lại, bạn có thể sử dụng đoạn mã sau để khởi tạo trình thông dịch Python với mô-đun mở rộng của mình

    D:\YourName\Projects\Python>
    
    3

  5. Có hai vấn đề với API C của Python sẽ trở nên rõ ràng nếu bạn sử dụng trình biên dịch không phải MSVC, trình biên dịch được sử dụng để xây dựng pythonNN. dll

    vấn đề 1. Cái gọi là hàm “Cấp cao” nhận đối số

    Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
    7 sẽ không hoạt động trong môi trường nhiều trình biên dịch vì khái niệm của mỗi trình biên dịch về một
    Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
    8 sẽ khác nhau. Từ quan điểm triển khai, đây là các hàm cấp rất thấp

    vấn đề 2. SWIG tạo mã sau khi tạo trình bao bọc để vô hiệu hóa chức năng

    D:\YourName\Projects\Python>
    
    6

    Than ôi, Py_None là một macro mở rộng thành tham chiếu đến cấu trúc dữ liệu phức tạp có tên _Py_NoneStruct bên trong pythonNN. dll. Một lần nữa, mã này sẽ thất bại trong môi trường nhiều trình biên dịch. Thay thế mã đó bằng

    D:\YourName\Projects\Python>
    
    7

    Có thể sử dụng lệnh

    Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
    9 của SWIG để thực hiện thay đổi một cách tự động, mặc dù tôi chưa thể làm cho nó hoạt động được (Tôi là một người mới hoàn toàn sử dụng SWIG)

  6. Sử dụng tập lệnh trình bao Python để tạo cửa sổ trình thông dịch Python từ bên trong ứng dụng Windows của bạn không phải là một ý kiến ​​hay; . Thay vào đó, bạn (hoặc lớp wxPythonWindow) nên tạo một cửa sổ thông dịch “gốc”. Thật dễ dàng để kết nối cửa sổ đó với trình thông dịch Python. Bạn có thể chuyển hướng i/o của Python sang đối tượng _any_ hỗ trợ đọc và ghi, vì vậy tất cả những gì bạn cần là một đối tượng Python (được xác định trong mô-đun mở rộng của bạn) có chứa các phương thức read() và write()

Làm cách nào để ngăn người chỉnh sửa chèn tab vào mã nguồn Python của tôi?¶

Câu hỏi thường gặp không khuyến nghị sử dụng tab và hướng dẫn kiểu Python, PEP 8, đề xuất 4 khoảng trắng cho mã Python phân tán;

Dưới bất kỳ trình chỉnh sửa nào, trộn lẫn các tab và dấu cách là một ý tưởng tồi. MSVC không có gì khác biệt về mặt này và được cấu hình dễ dàng để sử dụng khoảng trắng. Chọn Công cụ ‣ Tùy chọn ‣ Tab và đối với loại tệp “Mặc định”, đặt “Kích thước tab” và “Kích thước thụt lề” thành 4 và chọn “Chèn .

Python tăng

>>> print("Hello")
Hello
>>> "Hello" * 3
'HelloHelloHello'
0 hoặc
>>> print("Hello")
Hello
>>> "Hello" * 3
'HelloHelloHello'
1 nếu các tab và dấu cách hỗn hợp gây ra sự cố trong khoảng trắng ở đầu. Bạn cũng có thể chạy mô-đun
>>> print("Hello")
Hello
>>> "Hello" * 3
'HelloHelloHello'
2 để kiểm tra cây thư mục ở chế độ hàng loạt

Làm cách nào để kiểm tra một lần nhấn phím mà không bị chặn?¶

Sử dụng mô-đun

>>> print("Hello")
Hello
>>> "Hello" * 3
'HelloHelloHello'
3. Đây là mô-đun mở rộng tiêu chuẩn dành riêng cho Windows. Nó định nghĩa một hàm
>>> print("Hello")
Hello
>>> "Hello" * 3
'HelloHelloHello'
4 kiểm tra xem có gõ bàn phím hay không và
>>> print("Hello")
Hello
>>> "Hello" * 3
'HelloHelloHello'
5 nhận một ký tự mà không lặp lại ký tự đó

Làm cách nào để giải quyết api-ms-win-crt-runtime-l1-1-0 bị thiếu. lỗi dll?¶

Điều này có thể xảy ra trên Python 3. 5 trở lên khi sử dụng Windows 8. 1 hoặc cũ hơn mà chưa cài đặt tất cả các bản cập nhật. Trước tiên, hãy đảm bảo hệ điều hành của bạn được hỗ trợ và cập nhật, đồng thời nếu điều đó không giải quyết được sự cố, hãy truy cập trang hỗ trợ của Microsoft để được hướng dẫn cài đặt bản cập nhật C Runtime theo cách thủ công

Làm cách nào để thực thi tập lệnh Python với các đối số trong tập lệnh Python?

Giải pháp. Bốn bước sau đây sẽ giúp bạn chạy tập lệnh Python. py với các đối số trong mã Python của bạn. .
Xác định tập lệnh tệp Python. py truy cập các đối số bằng cách sử dụng sys. .
Điền vào biến sys. .
Tải tập lệnh tệp Python. py thành một chuỗi Python. .
Truyền chuỗi Python vào hàm exec() tích hợp của Python

Bạn có thể gọi một tập lệnh Python từ một tập lệnh Python khác không?

Dòng đầu tiên của 'nhập python_2' trong tập lệnh python_1, sẽ gọi tập lệnh python_2 thứ hai. Bất cứ khi nào bạn muốn chạy một tập lệnh Python từ một tập lệnh khác, bạn sẽ cần nhập tên chính xác của tập lệnh Python mà bạn muốn gọi .

Chúng ta có thể chuyển đối số cho tập lệnh Python không?

Nhiều khi bạn cần truyền đối số cho tập lệnh Python của mình. Python cung cấp quyền truy cập vào các đối số này thông qua mô-đun sys . Bạn có thể truy cập trực tiếp vào chức năng argv và xử lý phân tích cú pháp các đối số của riêng bạn hoặc bạn có thể sử dụng một số mô-đun khác như argparse để thực hiện điều đó cho bạn.