У меня есть сценарий питона, на котором выполняется команда Линукс, чтобы проверить, если файл существует:Popen failed, если команда является списком и содержит '&&' или '||'
>>> p = subprocess.Popen([ 'sudo', 'test', '-f', '/root/some_file', '&&', 'echo', 'True', '||', 'echo', 'False' ])
Он производит ошибку:
>>> test: extra argument `&&'
Если передать команду в один, то он выполняется успешно:
>>> p = subprocess.Popen('sudo test -f /root/some_file && echo True || echo False' ], shell=True)
>>> True
Почему это происходит, если команда pass в качестве списка?
Мне нужно использовать как & &, так и || чтобы проверить, если файл в корень в существование, так что я не могу преобразовать его в цепочку отдельных команд, как предложено here
дубликата http://stackoverflow.com/questions/15467237/using-in -subprocess-popen-for-command-chaining? –
Да, это похоже. Но мой главный концерт - использовать как &&, так и || чтобы проверить, существует ли файл root, поэтому я не могу преобразовать его в цепочку отдельных команд. –