我正在尝试解压缩一个文件,读取其中一个提取的文件,并删除提取的文件。
- 提取的文件(例如,我们得到了file1和file2)
-
读取文件1并关闭它。
with open(file1, 'r') as f: data = f.readline() f.close()
-
用"数据"做点什么。
-
删除提取的文件。
os.remove(file1)
一切都很顺利,只是最后收到了这些信息。这些文件也被删除。如何正确关闭文件?
/tmp/file1: No such file or directory
140347508795048:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/tmp/file1','r')
140347508795048:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
更新:(我的脚本看起来和这些相似)
#!/usr/bin/python
import subprocess, os
infile = "filename.enc"
outfile = "filename.dec"
opensslCmd = "openssl enc -a -d -aes-256-cbc -in %s -out %s" % (infile, outfile)
subprocess.Popen(opensslCmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)
os.remove(infile)
将with
与file
上下文管理器一起使用时,无需关闭文件句柄,当作用域发生更改时,即读取行完成时,句柄会自动关闭。
请参阅python教程
您看到的错误不是Python报告的错误。它们的意思不是Python试图打开这些文件,尽管很难从你的小片段中判断出是什么。
如果您只是想从zip文件中检索一些数据,那么就没有理由将它们提取到磁盘中。您可以使用zipfile.ZipFile.open
直接从zip文件中读取数据,只提取到内存中。