Python - writing and reading from a temporary file
As per the docs, the file is deleted when the TemporaryFile
is closed and that happens when you exit the with
clause. So... don't exit the with
clause. Rewind the file and do your work in the 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)
You've got a scope problem; the file tmp
only exists within the scope of the with
statement which creates it. Additionally, you'll need to use a NamedTemporaryFile
if you want to access the file later outside of the initial with
(this gives the OS the ability to access the file). Also, I'm not sure why you're trying to append to a temporary file... since it won't have existed before you instantiate it.
Try this:
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