Python-запись и чтение из временного файла
Я пытаюсь создать временный файл, который я пишу несколько строк из другого файла, а затем сделать некоторые объекты из данных. Я не уверен, как найти и открыть файл temp, чтобы я мог его прочитать. Мой код:
with tempfile.TemporaryFile() as tmp:
lines = open(file1).readlines()
tmp.writelines(lines[2:-1])
dependencyList = []
for line in tmp:
groupId = textwrap.dedent(line.split(':')[0])
artifactId = line.split(':')[1]
version = line.split(':')[3]
scope = str.strip(line.split(':')[4])
dependencyObject = depenObj(groupId, artifactId, version, scope)
dependencyList.append(dependencyObject)
tmp.close()
по сути, я просто хочу сделать посредник временный документ, для защиты от случайной перезаписи файла.
2 ответов
на docs, файл удаляется, когда TemporaryFile
закрыт, и это происходит при выходе из with
предложения. Так... не выходите из with
предложения. Перемотайте файл и сделайте свою работу в with
.
with tempfile.TemporaryFile() as tmp:
lines = open(file1).readlines()
tmp.writelines(lines[2:-1])
tmp.seek(0)
for line in tmp:
groupId = textwrap.dedent(line.split(':')[0])
artifactId = line.split(':')[1]
version = line.split(':')[3]
scope = str.strip(line.split(':')[4])
dependencyObject = depenObj(groupId, artifactId, version, scope)
dependencyList.append(dependencyObject)
у вас проблема с областью действия; файл tmp
существует только в рамках with
оператор, который создает его. Кроме того, вам нужно будет использовать NamedTemporaryFile
Если вы хотите получить доступ к файлу вне изначального with
(это дает ОС возможность доступа к файлу). Кроме того, я не уверен, почему вы пытаетесь добавить во временный файл... поскольку он не существовал до того, как вы его создали.
попробуйте это:
import tempfile
tmp = tempfile.NamedTemporaryFile()
# Open the file for writing.
with open(tmp.name, 'w') as f:
f.write(stuff) # where `stuff` is, y'know... stuff to write (a string)
...
# Open the file for reading.
with open(tmp.name) as f:
for line in f:
... # more things here