Hướng dẫn why does my python file close immediately - tại sao tệp python của tôi đóng ngay lập tức

Tôi không thể tìm thấy bất cứ nơi nào trên internet một cụ thể không có kịch bản thực sự, nhấp đúp và cửa sổ không đóng giải pháp. Tôi đoán tôi quá lười biếng để kéo và thả hoặc gõ khi tôi không cần phải như vậy sau khi thử nghiệm, tôi đã đưa ra một giải pháp.

Ý tưởng cơ bản là để lại các tệp .py để chúng chạy một tập lệnh ban đầu riêng biệt trước khi chạy tập lệnh dự định. Tập lệnh ban đầu khởi chạy cửa sổ nhắc lệnh mới với tham số /k để mở dấu nhắc lệnh sau khi hoàn thành và chạy tập lệnh dự định của bạn trong cửa sổ mới.

Có thể có những lý do chính đáng để không làm điều này, những người có nhiều kiến ​​thức xin vui lòng bình luận nếu vậy, nhưng tôi nghĩ rằng nếu tôi gặp bất kỳ điều gì thì dễ dàng trở lại nếu cần. Một tác dụng phụ không mong muốn là kéo và thả hoặc gõ và chạy từ dấu nhắc lệnh giờ sẽ mở dấu nhắc lệnh thứ hai thay vì chạy trong lời nhắc lệnh bạn kéo hoặc nhập.

Bây giờ, để thực hiện, tôi gọi tập lệnh Python ban đầu python_cmd_k.pyw. Tôi đang sử dụng Python 3.7. Mã cần thiết có thể khác nhau cho các phiên bản khác. Thay đổi đường dẫn C: \ Python37 \ python.exe sang vị trí cài đặt Python của bạn. Liên kết các tệp .pyw với pythonw.exe (không phải python.exe) thông qua Windows nếu chúng chưa có.

import subprocess
import sys

#Run a python script in a new command prompt that does not close
command = 'start cmd /k C:\Python37\python.exe "' + sys.argv[1] + '"'
subprocess.run(command, shell=True)

Điều này chạy mỗi khi bạn nhấp vào bất kỳ tập lệnh nào và khởi chạy dấu nhắc lệnh mới để chạy tập lệnh bạn đã nhấp đúp chuột. Chạy qua pythonw.exe triệt tiêu cửa sổ nhắc lệnh khi tập lệnh ban đầu này chạy. Mặt khác, nếu bạn chạy nó qua python.exe một chớp mắt khó chịu của một dấu nhắc lệnh xuất hiện do kết quả của cửa sổ đầu tiên hiển thị ngắn gọn mỗi lần. Tập lệnh dự định hiển thị vì mã trong tập lệnh ban đầu ở trên chạy tập lệnh dự định với python.exe.

Bây giờ liên kết các tệp .py với python.exe (không phải pythonw.exe) thông qua Windows nếu chúng chưa có và chỉnh sửa mục đăng ký cho hiệp hội này (từ chối trách nhiệm: luôn sao lưu sổ đăng ký của bạn trước khi chỉnh sửa nếu bạn không chắc chắn về những gì bạn đang làm ). Tôi không biết liệu có các đường dẫn khác nhau trong sổ đăng ký cho liên kết tệp cho các phiên bản khác nhau của Windows nhưng đối với tôi, đó là tại:

HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command

Thay đổi dữ liệu thành đường dẫn pythonw.exe (không phải python.exe) và thêm đường dẫn vào tập lệnh ptyon ở trên và "%1" dưới dạng đối số ("%1" vượt qua đường dẫn đầy đủ của tệp đã nhấp gấp đôi). Ví dụ: nếu pythonw.exe và python_cmd_k.pyw đang ở C: \ python37 \ sau đó:

"C:\Python37\pythonw.exe" "C:\Python37\python_cmd_k.pyw" "%1"

Không cần thiết phải đặt python_cmd_k.pyw vào cùng thư mục với pythonw.exe miễn là bạn cung cấp đường dẫn chính xác cho cả hai. Bạn có thể đặt các tệp này vào .reg để dễ dàng chuyển đổi qua lại giữa việc sử dụng tập lệnh và hành vi mặc định. Thay đổi các đường dẫn khi cần thiết trong các ví dụ bên dưới (vị trí trong sổ đăng ký, cài đặt Python của bạn, vị trí bạn đặt tập lệnh Python_CMD_K.PYW của bạn).

Với ptyon_cmd_k.pyw (thay đổi đường dẫn khi cần):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command]
@="\"C:\\Python37\\pythonw.exe\" \"C:\\Python37\\python_cmd_k.pyw\" \"%1\""

Phiên bản mặc định (thay đổi đường dẫn khi cần):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command]
@="\"C:\\Python37\\python.exe\" \"%1\""

  1. Làm thế nào để
  2. Python làm thế nào
  3. Chương trình Python đóng ngay lập tức

Đã tạo: tháng 3 đến 11, 2022

  1. Sử dụng chức năng input() để dừng chương trình Python đóng ngay lập tức
  2. Sử dụng cờ -i để dừng chương trình Python đóng ngay lập tức
  3. Sử dụng lệnh python để dừng chương trình Python đóng ngay lập tức
  4. Sử dụng chức năng
    HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command
    
    0 để dừng chương trình Python đóng ngay lập tức

Các tập lệnh Python có thể được tạo và chỉnh sửa bằng nhiều biên tập viên khác nhau. Chúng ta có thể sử dụng các Idles khác nhau hoặc lời nhắc lệnh để chạy các tập lệnh này.

Đôi khi một chương trình Python ngay lập tức đóng cửa khi chúng tôi chạy nó, điều này có thể xảy ra vì nhiều lý do.

Nếu một chương trình Python đóng ngay lập tức, chúng ta có thể sử dụng các cách sau để giải quyết vấn đề.

Hàm input() được sử dụng để đọc một số đầu vào từ người dùng. Chúng tôi có thể thêm lời nhắc này đến cuối chương trình để ngăn nó đóng ngay lập tức.

Điều này sẽ đảm bảo lời nhắc để có được một số đầu vào của người dùng khi kết thúc chương trình. Chúng tôi có thể cung cấp bất kỳ đầu vào; Nó không quan trọng và nhấn enter vì chúng tôi đã giành được quy trình đầu vào ở bất cứ đâu trong mã.

Trong Python 2, chúng ta phải sử dụng phương thức

HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command
2 để lấy đầu vào của người dùng.

Cờ -i được sử dụng để đặt cờ kiểm tra thành

HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command
4 khi được sử dụng trong dấu nhắc lệnh. Điều này ngăn chặn chương trình thoát ra trên
HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command
5, vì vậy nó có thể giải quyết một chương trình Python kết thúc ngay lập tức.

Khi chương trình kết thúc, tùy chọn này nói rằng để chuyển sang chế độ tương tác.

Chúng ta có thể chạy các tập lệnh Python từ dấu nhắc lệnh. Vấn đề được đề cập là phổ biến khi chúng tôi yêu cầu

HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command
6 chạy tập lệnh khi cửa sổ
HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command
6 đóng khi chương trình chấm dứt.

Nếu đây thực sự là lý do để kết thúc chương trình, chúng ta có thể chạy tập lệnh khác nhau. Chúng ta có thể truy cập thư mục script và chạy nó bằng lệnh python.

Ví dụ:

cd C:\User\ScriptDir
python script_name.py

Lệnh

HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command
9 có thể điều hướng đến thư mục cần thiết.

Mô -đun

"C:\Python37\pythonw.exe" "C:\Python37\python_cmd_k.pyw" "%1"
0 cung cấp các chức năng khác nhau để hoạt động với các giá trị thời gian. Chúng ta có thể thêm độ trễ thứ hai cần thiết bằng cách sử dụng hàm
"C:\Python37\pythonw.exe" "C:\Python37\python_cmd_k.pyw" "%1"
1.

Nếu một chương trình đóng ngay lập tức, chúng ta có thể thêm chức năng này ở cuối để tạo ra một chút độ trễ để quan sát đầu ra đúng cách.

Ví dụ:

import time
time.sleep(20)

Lệnh

HKEY_CURRENT_USER\Software\Classes\Applications\python.exe\shell\open\command
9 có thể điều hướng đến thư mục cần thiết.

Hướng dẫn why does my python file close immediately - tại sao tệp python của tôi đóng ngay lập tức

Làm cách nào để ngăn chặn Python đóng ngay lập tức?

Sử dụng cờ -i để dừng chương trình Python đóng ngay lập tức. Cờ -I được sử dụng để đặt cờ kiểm tra thành true khi được sử dụng trong dấu nhắc lệnh. Điều này ngăn chặn chương trình thoát ra trên SystemExit, vì vậy nó có thể giải quyết chương trình Python kết thúc ngay lập tức.. The -i flag is used to set the inspect flag to True when used in the command prompt. This prevents the program from exiting on SystemExit , so it can solve a Python program from closing immediately.

Làm cách nào để giữ một kịch bản Python mở?

CMD /K là cách điển hình để mở bất kỳ ứng dụng bảng điều khiển nào (không chỉ Python) với cửa sổ bảng điều khiển sẽ còn lại sau khi ứng dụng đóng. Cách dễ nhất tôi có thể nghĩ để làm điều đó, là nhấn Win+R, nhập CMD /K và sau đó kéo và thả tập lệnh bạn muốn vào hộp thoại Run.press Win+R, type cmd /k and then drag&drop the script you want to the Run dialog.

Làm cách nào để làm cho Python không đóng cửa sổ?

Hãy thử bằng cách sử dụng cờ tương tác. `python -i your_file.py`.Ngoài ra, bạn có thể sử dụng máy tính xách tay Ipython (Jupyter) để chạy mọi thứ theo từng bước và xem đầu ra (cùng với một số phép thuật tiện lợi khác). `python -i your_file.py`. Additionally you can use iPython (Jupyter) Notebooks to run things stepwise and view output (along with some other nifty magic).

Khi cố gắng mở một tệp Python tại sao màn hình đen xuất hiện và biến mất ngay lập tức?

Bảng điều khiển xuất hiện và biến mất vì chương trình kết thúc, có thể rất nhanh và bạn không được xem các thông điệp do chương trình tạo ra.because the program finishes, possibly very quickly, and you don't get to see the messages produced by the program.