У меня есть скрипт Python, который запускает подпроцесс, чтобы получить некоторые данные и затем обработать их.Я пытаюсь добиться, чтобы данные были записаны в файл, а затем использовать данные из файла для обработки (причина в том, что подпроцесс медленный, но может меняться в зависимости от даты, времени и параметровЯ использую, и мне нужно часто запускать скрипт)
Я пробовал различные методы, включая открытие файла как w+
и попытку поиска начала после завершения записи, но, похоже, ничего не происходитработа - файл написан, но когда я пытаюсь прочитать из него обратно (используя file.readline()
), я получаю EOF обратно.
Это то, что я пытаюсь сделать:
myFile = open(fileName, "w")
p = subprocess.Popen(args, stdout=myFile)
myFile.flush() # force the file to disk
os.fsync(myFile) # ..
myFile.close()
myFile = open(fileName, "r")
while myFile.readline():
pass # do stuff
myFile.close()
Но даже если файл написан правильно (после запуска скрипта я могу увидеть содержимое файла), readline никогда не возвращает правильную строку.Как я уже сказал, я тоже пытался использовать тот же файловый объект и делать с ним seek(0)
, но безуспешно.Это работало только при открытии файла как r+
, что не удается, если файл еще не существует.
Любая помощь будет принята с благодарностью.Кроме того, если есть более чистый способ сделать это, я открыт для этого:)
PS: я понимаю, что могу Popen
и stdout
в канал, читать из канала и затем писать строкувыровняйте данные в файл, как я это делаю, но я пытаюсь отделить создание файла данных от чтения.