Считывание Python из вновь записанного файла не работает в модуле - PullRequest
0 голосов
/ 06 мая 2018

Я пишу модуль Python, который работает с файлами текущего каталога. Это код:

import subprocess

filename="tmp_file"

#sends ls output to a temporary file
with open(filename, 'w+') as f:
    subprocess.Popen(['ls', '-p'], stdout=f)
    f.seek(0)
    result = f.read()

Однако результат кажется пустым. Зачем? (Если я выполняю одну команду за раз в интерпретаторе Python, она работает правильно)

1 Ответ

0 голосов
/ 06 мая 2018

Необходимо разрешить завершению подпроцесса с помощью wait(), check_call() или одной из других альтернатив.

subprocess.Popen(['ls', '-p'], stdout=f).wait()

Кроме того, если ваша цель - составить список содержимого каталога, в Python есть встроенные способы сделать это - нет необходимости использовать подпроцесс.

...