Tôi có mã Python sau:
os.system["C:/Python27/python.exe C:/GUI/TestGUI.py"]
sys.exit[0]
Nó chạy lệnh tốt, và một cửa sổ bật lên. Tuy nhiên, nó không thoát khỏi tập lệnh đầu tiên. Nó chỉ ở đó, và cuối cùng tôi phải buộc phải giết quá trình. Không có lỗi được sản xuất. Chuyện gì đang xảy ra?
Hỏi ngày 24 tháng 7 năm 2011 lúc 13:41Jul 24, 2011 at 13:41
3
Thay vì os.system
sử dụng
import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
0Điều này chạy một lệnh và không chờ đợi nó và sau đó thoát ra:
import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
Lưu ý rằng
import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
1 như:p = subprocess.Popen[command]
p.wait[]
Đã trả lời ngày 24 tháng 7 năm 2011 lúc 13:52Jul 24, 2011 at 13:52
Dan D.Dan D.Dan D.
71.7K14 Huy hiệu vàng98 Huy hiệu bạc119 Huy hiệu đồng14 gold badges98 silver badges119 bronze badges
1
Bàn phím và tín hiệu chỉ được nhìn thấy bởi quy trình [tức là luồng chính]. Nếu lệnh lồng nhau của bạn bị treo do một số loại tệp đọc hoặc ghi, bạn sẽ không thể thoát khỏi chương trình bằng bất kỳ lệnh bàn phím nào.
Tại sao chỉ đọc một khối đường ống có tên?
Nếu bạn không thể loại bỏ nguồn gốc của khối đĩa, thì một cách là bọc quy trình trong luồng để bạn có thể buộc giết nó. Nhưng nếu bạn làm điều này, bạn để lại cơ hội cho các tệp được viết một nửa và bị hỏng trên đĩa.
Đã trả lời ngày 21 tháng 7 năm 2015 lúc 1:22Jul 21, 2015 at 1:22
Eric Leschinskieric LeschinskiEric Leschinski
Phù vàng 140K92 Huy hiệu vàng406 Huy hiệu bạc330 Huy hiệu đồng92 gold badges406 silver badges330 bronze badges
Tôi đề nghị sử dụng
import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
2 thay vì import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
3, vì sys.exit không thoát khỏi một chương trình nhưng tăng cấp ngoại lệ hoặc thoát khỏi một luồng. import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
4 Thoát toàn bộ chương trình
Đã trả lời ngày 2 tháng 4 năm 2013 lúc 9:10Apr 2, 2013 at 9:10
import sys ,subprocess
subprocess.Popen[["C:/Python27/python.exe", "C:/GUI/TestGUI.py"]]
sys.exit[0]
Popen từ mô -đun phụ mà bạn đang tìm kiếm.
Đã trả lời ngày 24 tháng 7 năm 2011 lúc 13:50Jul 24, 2011 at 13:50
Utdemirutdemirutdemir
25.9k10 Huy hiệu vàng61 Huy hiệu bạc81 Huy hiệu đồng10 gold badges61 silver badges81 bronze badges
Trong hướng dẫn này, chúng tôi sẽ tìm hiểu về lệnh hệ thống Python. Trước đây chúng tôi đã tìm hiểu về số ngẫu nhiên Python.
Lệnh hệ thống Python
Trong khi tạo một chương trình trong Python, bạn có thể cần phải vượt qua một số lệnh shell cho chương trình của mình. Ví dụ: nếu bạn sử dụng IDE
import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
5, bạn có thể nhận thấy rằng có tùy chọn để chia sẻ dự án của bạn trên GitHub. Và bạn có thể biết rằng việc chuyển tệp được thực hiện bởi Git, được vận hành bằng dòng lệnh. Vì vậy, Pycharm thực hiện một số lệnh shell trong nền để làm điều đó. Tuy nhiên, trong hướng dẫn này, chúng tôi sẽ tìm hiểu một số điều cơ bản về việc thực thi các lệnh shell từ mã Python của bạn.git, which is operated using command line. So, Pycharm executes some shell commands in background to do it. However, In this tutorial we will learn some basics about executing shell commands from your python code.Chức năng python os.system []
Chúng ta có thể thực thi lệnh hệ thống bằng cách sử dụng hàm os.system []. Theo tài liệu chính thức, người ta đã nói rằng
Điều này được thực hiện bằng cách gọi hệ thống hàm C tiêu chuẩn [] và có cùng giới hạn.
Tuy nhiên, nếu lệnh tạo ra bất kỳ đầu ra nào, nó được gửi đến luồng đầu ra tiêu chuẩn phiên dịch. Sử dụng lệnh này không được khuyến khích. Trong mã sau, chúng tôi sẽ cố gắng biết phiên bản GIT bằng lệnh hệ thống
import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
6.import os
cmd = "git --version"
returned_value = os.system[cmd] # returns the exit code in unix
print['returned value:', returned_value]
Đầu ra sau đây được tìm thấy trong Ubuntu 16.04 khi Git được cài đặt.
git version 2.14.2
returned value: 0
Lưu ý rằng chúng tôi không in đầu ra lệnh phiên bản Git thành bảng điều khiển, nó được in vì bảng điều khiển là luồng đầu ra tiêu chuẩn ở đây.
Chức năng của Python SubProcess.call []
Trong phần trước, chúng tôi đã thấy rằng chức năng
import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
7 hoạt động tốt. Nhưng nó không nên cách thực thi các lệnh shell. Chúng tôi sẽ sử dụng mô -đun phụ Python để thực thi các lệnh hệ thống. Chúng ta có thể chạy các lệnh shell bằng cách sử dụng hàm import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
8. Xem mã sau tương đương với mã trước đó.import subprocess
cmd = "git --version"
returned_value = subprocess.call[cmd, shell=True] # returns the exit code in unix
print['returned value:', returned_value]
Và đầu ra cũng sẽ giống nhau.
Chức năng của Python SubProcess.check_output []
Cho đến nay, chúng tôi đã thực hiện các lệnh hệ thống với sự trợ giúp của Python. Nhưng chúng tôi không thể điều khiển đầu ra được tạo ra bởi các lệnh đó. Sử dụng chức năng
import subprocess
import sys
subprocess.Popen[["mupdf", "/home/dan/Desktop/Sieve-JFP.pdf"]]
sys.exit[0]
9, chúng ta có thể lưu trữ đầu ra trong một biến.import subprocess
cmd = "date"
# returns output as byte string
returned_output = subprocess.check_output[cmd]
# using decode[] function to convert byte string to string
print['Current date is:', returned_output.decode["utf-8"]]
Nó sẽ tạo ra đầu ra như sau
Current date is: Thu Oct 5 16:31:41 IST 2017
Vì vậy, trong các phần trên, chúng tôi đã thảo luận về các ý tưởng cơ bản về việc thực hiện lệnh hệ thống Python. Nhưng không có giới hạn trong học tập. Nếu bạn muốn, bạn có thể tìm hiểu thêm về lệnh hệ thống Python bằng mô -đun phụ từ tài liệu chính thức.