Я новичок в модуле subprocess
в python.Выполнение команд/программ с подпроцессом
В документации, предоставленной этот пример:
>>> subprocess.check_output(["echo", "Hello World!"])
b'Hello World!\n'
Я попытался это:
>>> import subprocess
>>> subprocess.check_output(["cd", "../tests", "ls"])
/usr/bin/cd: line 4: cd: ../tests: No such file or directory
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess.py", line 620, in check_output
raise CalledProcessError(retcode, process.args, output=output)
subprocess.CalledProcessError: Command '['cd', '../tests', 'ls']' returned non-zero exit status 1
Я смущен, потому что это моя структура файла:
/proj
/cron
test_scheduler.py
/tests
printy.py
test1.py
test2.py
...
Это моя вторая также попытки:
>>> subprocess.check_output(["cd", "../tests", "python", "printy.py"])
/usr/bin/cd: line 4: cd: ../tests: No such file or directory
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess.py", line 620, in check_output
raise CalledProcessError(retcode, process.args, output=output)
subprocess.CalledProcessError: Command '['cd', '../tests', 'python', 'printy.py']' returned non-zero exit status 1
>>> subprocess.check_output(["cd", "../tests;", "ls"])
/usr/bin/cd: line 4: cd: ../tests;: No such file or directory
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess.py", line 620, in check_output
raise CalledProcessError(retcode, process.args, output=output)
subprocess.CalledProcessError: Command '['cd', '../tests;', 'ls']' returned non-zero exit status 1
Возможно, поэтому я принял для написания Shell = True - как один из моих Первые попытки были cd. Теперь все части головоломки падают на место :) – BitTickler
Если вы ничего не делаете с оболочкой, вам лучше не использовать 'shell = True'. Может показаться, что это облегчает жизнь для вас, но поверьте мне, это может дать вам головные боли в долгосрочной перспективе. – SuperSaiyan
Правда. Мой единственный раз, когда я использовал python, был именно тогда, когда мне понадобился резервный скрипт, в то время как в любопытном настроении пытались использовать какой-то другой язык. Поэтому у меня нет более глубоких знаний о лучших методах работы с python. – BitTickler