【发布时间】:2018-07-31 16:25:25
【问题描述】:
我有一些 zip 文件需要在 Python 3 中以编程方式删除。我根本不需要先打开它们:我可以仅根据文件名确定是否要删除它们。在为这个问题扫描 SO 时,我注意到以下不令人满意的问题(不令人满意,例如,我尝试了他们所有的方法都没有成功):
- Removing path from a zip file using python
- Python zipfile doesn't release zip file
- Unable to remove zipped file after unzipping
- os.remove() in windows gives "[Error 32] being used by another process"
特别是,调用close() 方法或在with 子句中打开文件不会释放任何Windows 锁。 我能做到的最简单的MWE梦想是这样的:
import os
file_path = r'C:\Users\akeister\Desktop\Tatsuro 1.2.0.zip'
os.remove(file_path)
这段代码产生:
PermissionError: [WinError 32] The process cannot access the file because it
is being used by another process: 'C:\\Users\\akeister\\Desktop\\Tatsuro
1.2.0.zip'
如果我尝试,我会得到同样的错误
import os
file_path = r'C:\Users\akeister\Desktop\Tatsuro 1.2.0.zip'
with open(file_path) as f:
f.close()
os.remove(file_path)
或
import gzip
import os
file_path = r'C:\Users\akeister\Desktop\Tatsuro 1.2.0.zip'
with gzip.GzipFile(file_path) as f:
f.close()
os.remove(file_path)
或
import zipfile
import os
zipped_file = r'C:\Users\akeister\Desktop\Tatsuro 1.2.0.zip'
with zipfile.ZipFile(zipped_file) as zip_file:
for member in zip_file.namelist():
filename = os.path.basename(member)
if not filename:
continue
source = zip_file.open(member)
os.remove(zipped_file)
没有打开桌面的命令提示符,也没有打开桌面的 Windows 资源管理器窗口。
我怀疑我的部分问题是文件可能是 gzip 文件,而不是常规的 zip 文件。我不完全确定它们是什么。我使用内置的 zip 函数在 LabVIEW 2015 中生成了 zip 文件(至少,它们具有 .zip 扩展名)。从 LabVIEW 文档中并不清楚 zip 函数使用哪种压缩。
我的问题的解决方案是什么?提前感谢您的宝贵时间!
【问题讨论】:
-
在LabVIEW中创建ZIP文件后是否关闭它? zone.ni.com/reference/en-XX/help/371361M-01/glang/…
-
@Lithis:是的,我愿意。我认为发布的答案是正确的。
-
@AdrianKeister 你能贴一张创建 .zip 文件的 LV 代码的图片吗?看看里面是否有什么特别的东西可以让 LV 保持文件打开会很有用。
标签: windows python-3.x zip gzip labview