модуль подпроцесса: использование метода call с объектами tempfile - PullRequest
2 голосов
/ 26 июня 2009

Я создал временные именованные файлы с помощью библиотеки временных файлов NamedTeoraryFile. Я написал им очищенные буферы, и я не закрыл их (иначе они могут уйти)

Я пытаюсь использовать модуль subprocess для вызова некоторых команд оболочки, используя эти сгенерированные файлы.

subprocess.call('cat %s' % f.name) всегда терпит неудачу, говоря, что указанный временный файл не существует.

os.path.exists(f.name) всегда возвращает true. Я могу запустить команду cat для файла прямо из оболочки.

По какой причине модуль subprocess не будет работать с временными файлами?

Есть ли способ заставить его работать?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 26 июня 2009

Почему бы вам не сделать свои NamedTemporaryFile с необязательным параметром delete=False? Таким образом, вы можете безопасно закрыть их, зная, что они не исчезнут, потом использовать их как обычно и явно отключить их, когда вы закончите. Таким образом, все будет работать и кроссплатформенно.

1 голос
/ 26 июня 2009

Используете ли вы параметр shell = True для подпроцесса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...