Я пишу во временный файл, загружая файл с S3. Когда я открываю загруженный файл (называемый 3
) в моем текстовом редакторе, я вижу все строки текста. Но мой код ничего не возвращает, когда я пытаюсь прочитать файл построчно.
После запуска кода временный файл создается в каталоге скрипта Python и не исчезает.
import tempfile
import os
import boto3
s3 = boto3.client('s3')
with tempfile.TemporaryFile() as tf:
try:
s3.download_file(
Bucket='the-chumiest-bucket',
Key='path/to/the/file.txt',
Filename=str(tf.name)
)
except Exception as e:
print('error:', e)
tf.flush()
tf.seek(0, os.SEEK_END)
for line in tf.readlines():
print('line:', line)
Если я бегу
with open('3', 'r') as f:
for line in f.readlines():
print(line)
Я получил строки, так что это может быть обходной путь, но я видел, как многие люди читали строки из временного файла, используя этот точный метод.
Ожидаемый результат:
Я получил напечатанные строки в file.txt
.
Фактический результат:
Я ничего не напечатал.
Редактировать # 1
Изменено tf.seek(0, os.SEEK_END)
на tf.seek(0, os.SEEK_SET)
(спасибо @Barmar) и по-прежнему не печатаются строки. Всего одна пустая строка.