Python:关闭和删除文件
我正在尝试解压缩一个文件,读取其中一个解压缩文件,然后删除解压缩文件Python:关闭和删除文件,python,file,Python,File,我正在尝试解压缩一个文件,读取其中一个解压缩文件,然后删除解压缩文件 提取的文件(例如,我们得到了文件1和文件2) 读取文件1,然后将其关闭 with open(file1, 'r') as f: data = f.readline() f.close() 对“数据”做些什么 删除提取的文件 os.remove(file1) 一切都很顺利,只是最后收到了这些信息。这些文件也被删除了。如何正确关闭文件 /tmp/file1: No such file or director
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:
更新:
(我的脚本看起来与这些类似)
当对
文件
上下文管理器使用时,无需关闭文件句柄,当作用域发生更改时,即读线完成时,句柄将自动关闭
请参见无需关闭文件句柄当将
与文件一起使用上下文管理器时,当作用域发生更改时,即当读线完成时,句柄将自动关闭
请参见您看到的错误不是Python报告的错误。它们意味着Python试图打开这些文件之外的其他东西,尽管很难从您的小片段中看出什么
如果您只是试图从zip文件中检索一些数据,那么就没有理由将它们解压缩到磁盘。您只需使用
zipfile.zipfile.open
直接从zip文件读取数据,仅提取到内存,您看到的错误并不是Python报告的错误。它们意味着Python试图打开这些文件之外的其他东西,尽管很难从您的小片段中看出什么
如果您只是试图从zip文件中检索一些数据,那么就没有理由将它们解压缩到磁盘。您只需使用
zipfile.zipfile.open
直接从zip文件读取数据,仅提取到内存,那么为什么脚本中会显示文件错误?我删除了f.close(),没有任何帮助。我认为您需要在上面添加更多的代码来说明原因,很难从您的代码片段中看出原因:subprocess.Popen(mycommand,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,close\u fds=True)
。该命令只是一个openssl命令,用于输入我提取的一个文件。我该如何正确地做呢?我为这些新手问题感到抱歉。@super没有人发布新问题,请不要忘记发布所有代码。这个Q是可以接受的;因此,人们可能会跳过阅读它…那么为什么它会显示脚本中的文件错误呢?我删除了f.close(),没有任何帮助。我认为您需要在上面添加更多的代码来说明原因,很难从您的代码片段中看出原因:subprocess.Popen(mycommand,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,close\u fds=True)
。该命令只是一个openssl命令,用于输入我提取的一个文件。我该如何正确地做呢?我为这些新手问题感到抱歉。@super没有人发布新问题,请不要忘记发布所有代码。这个Q是可以接受的;因此人们可能会跳过阅读…我没有意识到这一点。很高兴知道。该过程涉及将提取的文件之一作为“openssl”命令的输入,并通过子流程执行subprocess.Popen(mycommand,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,close\u fds=True)
。这就是导致错误的原因。我还在寻找一个解决办法,我没有意识到这一点。很高兴知道。该过程涉及将提取的文件之一作为“openssl”命令的输入,并通过子流程执行subprocess.Popen(mycommand,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,close\u fds=True)
。这就是导致错误的原因。我仍在寻找解决办法。
#!/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)