Tôi muốn gọi nhiều lệnh từ tập lệnh Python của tôi. Tuy nhiên, tôi đã thử sử dụng OS.System [], tôi đang gặp sự cố khi thư mục hiện tại được thay đổi.
example:
os.system["ls -l"]
os.system[""] # This will change the present working directory
os.system["launchMyApp"] # Some application invocation I need to do.
Bây giờ, cuộc gọi thứ ba để ra mắt không hoạt động.
Oguz Ismail
42K13 Huy hiệu vàng44 Huy hiệu bạc65 Huy hiệu Đồng13 gold badges44 silver badges65 bronze badges
Đã hỏi ngày 18 tháng 11 năm 2013 lúc 7:19Nov 18, 2013 at 7:19
0
os.system
là một trình bao bọc cho hàm C tiêu chuẩn system[]
, và do đó đối số của nó có thể là bất kỳ lệnh shell hợp lệ nào miễn là nó phù hợp với bộ nhớ dành cho môi trường và danh sách đối số của một quy trình.any valid shell command as long as it fits into the memory reserved for environment and argument lists of a process.
Vì vậy, hãy tách các lệnh đó với dấu chấm phẩy hoặc ngắt dòng và chúng sẽ được thực thi tuần tự trong cùng một môi trường.
os.system[" ls -l; ; launchMyApp"]
os.system['''
ls -l
launchMyApp
''']
Oguz Ismail
42K13 Huy hiệu vàng44 Huy hiệu bạc65 Huy hiệu Đồng13 gold badges44 silver badges65 bronze badges
Đã hỏi ngày 18 tháng 11 năm 2013 lúc 7:19Jun 29, 2017 at 22:40
os.system
là một trình bao bọc cho hàm C tiêu chuẩn system[]
, và do đó đối số của nó có thể là bất kỳ lệnh shell hợp lệ nào miễn là nó phù hợp với bộ nhớ dành cho môi trường và danh sách đối số của một quy trình.Anynomous
Vì vậy, hãy tách các lệnh đó với dấu chấm phẩy hoặc ngắt dòng và chúng sẽ được thực thi tuần tự trong cùng một môi trường.3 silver badges3 bronze badges
0
Đã trả lời ngày 29 tháng 6 năm 2017 lúc 22:40
import os
os.system["ls -l"]
os.chdir['path'] # This will change the present working directory
os.system["launchMyApp"] # Some application invocation I need to do.
AnynomousanynomousFeb 25, 2019 at 7:11
3273 Huy hiệu bạc3 Huy hiệu đồngMuthu Kumar
Thử cái này11 silver badges24 bronze badges
Đã trả lời ngày 25 tháng 2 năm 2019 lúc 7:11
os.system[" ls -l; ; launchMyApp"]
1 is a very good way to approach the problem, used in the example below:import os
os.system['''cd /
mkdir somedir'''.replace['\n', ';']] # or use & for Windows
Muthu Kumarmuthu KumarApr 23, 2018 at 20:55
79511 Huy hiệu bạc24 Huy hiệu đồngAnonymous
Nó rất đơn giản, thực sự. Đối với Windows tách các lệnh của bạn với &
, cho Linux, hãy tách chúng bằng
0. os.system[" ls -l; ; launchMyApp"]
1 là một cách rất tốt để tiếp cận vấn đề, được sử dụng trong ví dụ dưới đây:4 gold badges15 silver badges35 bronze
badgesos.system[" ls -l; ; launchMyApp"]
0
Đã trả lời ngày 23 tháng 4 năm 2018 lúc 20:55
Ẩn danh
7094 Huy hiệu vàng15 Huy hiệu bạc35 Huy hiệu Đồng
#!/usr/bin/env python
from subprocess import check_call
check_call[r"""set -e
ls -l
# This will change the present working directory
launchMyApp""", shell=True]
Mỗi quá trình có thư mục làm việc hiện tại riêng. Thông thường, các quy trình con không thể thay đổi thư mục của cha mẹ, đó là lý do tại sao
os.system[" ls -l; ; launchMyApp"]
2 là lệnh shell tích hợp: nó chạy trong cùng một quy trình [shell].
Mỗi cuộc gọi
os.system[" ls -l; ; launchMyApp"]
3 tạo ra một quy trình shell mới. Thay đổi thư mục bên trong các quá trình này không có tác dụng đối với quy trình Python cha mẹ và do đó trên các quy trình shell tiếp theo.Feb 17, 2015 at 5:12
Để chạy nhiều lệnh trong cùng một phiên bản shell, bạn có thể sử dụng mô -đun
os.system[" ls -l; ; launchMyApp"]
4:jfsNếu bạn biết thư mục đích; Thay vào đó, sử dụng tham số
5 được đề xuất bởi @puffin GDI.183 gold badges950 silver badges1626 bronze badgesos.system[" ls -l; ; launchMyApp"]
Đã trả lời ngày 17 tháng 2 năm 2015 lúc 5:12
JFSJFSNov 18, 2013 at 7:25
386K183 Huy hiệu vàng950 Huy hiệu bạc1626 Huy hiệu Đồngvolcano
Khi bạn gọi Os.System [], mỗi khi bạn tạo một Subshell - đóng ngay lập tức khi Os.System trả về [quá trình phụ là thư viện được đề xuất để gọi các lệnh HĐH]. Nếu bạn cần gọi một bộ lệnh - gọi chúng trong một cuộc gọi. BTW, bạn có thể thay đổi Giám đốc làm việc từ Python - Os.chdir20 silver badges28 bronze badges
1
Đã trả lời ngày 18 tháng 11 năm 2013 lúc 7:25
example:
subprocess.Popen['launchMyApp', cwd=r'/working_directory/']
VolcanovolcanoNov 18, 2013 at 7:28
3.54820 Huy hiệu bạc28 Huy hiệu đồngPuffin GDI
Cố gắng sử dụng SubProcess.Popen và
55 gold badges30 silver badges37 bronze badgesos.system[" ls -l; ; launchMyApp"]
3
Đã trả lời ngày 18 tháng 11 năm 2013 lúc 7:28
os.system[" ls -l; ; launchMyApp"]
7GDI GDIPUFFIN GDI
1.6925 Huy hiệu vàng30 Huy hiệu bạc37 Huy hiệu ĐồngSep 8, 2016 at 18:04
Chỉ dùngCybersupernova
Tôi nghĩ bạn đã có ý tưởng phải làm gì1 gold badge18 silver badges35 bronze badges
0
os.system[" ls -l; ; launchMyApp"]
8
Đã trả lời ngày 8 tháng 9 năm 2016 lúc 18:04
Cybersupernovacybersupernova60 gold badges75 silver badges94 bronze badges
1.7731 Huy hiệu vàng18 Huy hiệu bạc35 Huy hiệu đồngSep 25, 2020 at 13:38
Tylerh
Đã trả lời ngày 8 tháng 9 năm 2016 lúc 18:04
Cybersupernovacybersupernova60 gold badges75 silver badges94 bronze badges
1.7731 Huy hiệu vàng18 Huy hiệu bạc35 Huy hiệu đồngNov 18, 2013 at 7:24
TylerhHoly Mackerel
Huy hiệu vàng 20.4K601 gold badge23 silver badges40 bronze badges