我有一个简单的程序,它查找目录中的所有压缩文件夹,定位一个压缩文件,获取位于压缩文件内的excel文件并将其移动到另一个位置(它为每个excel文件执行此操作,以及如何许多压缩文件夹):
path = 'C:\Users\me\Documents\Extract'
new_path = 'C:\Users\me\Documents\Test'
i = 0
for folder in os.listdir(path):
path_to_folder = os.path.join(path, folder)
zfile = zipfile.ZipFile(os.path.join(path, folder))
for name in zfile.namelist():
if name.endswith('.xls'):
new_name = str(i)+'_'+name
new_path = os.path.join(new_path, new_name)
zfile.close()
#os.rename(path_to_folde, new_path) -- ERROR HERE
shutil.move(path_to_folde, new_path) -- AND ERROR HERE
i += 1
我尝试了两种方法来移动Excel文件os.rename
和shutil.move
。我一直在收到错误:
WindowsError:[错误32]由于另一个进程正在使用该进程,该进程无法访问该文件。
我不明白为什么这个错误仍然存在,因为我关闭了每个文件夹。
答案 0 :(得分:10)
path = 'C:\Users\me\Documents\Extract'
destination_path = 'C:\Users\me\Documents\Test'
i = 0
for folder in os.listdir(path):
path_to_zip_file = os.path.join(path, folder)
zfile = zipfile.ZipFile(path_to_zip_file)
for name in zfile.namelist():
if name.endswith('.xls'):
new_name = str(i)+'_'+name
new_path = os.path.join(destination_path, new_name)
# This is obviously going to fail because we just opened it
shutil.move(path_to_zip_file, new_path)
i += 1
zfile.close()
更改了代码段中的一些变量名称。你现在看到你的问题了吗?您正试图移动您的进程已打开的zip文件。您需要使用zipfile模块将.xls
文件复制到目标位置。
答案 1 :(得分:2)
如果您在Windows计算机上,请转到任务管理器并单击进程选项卡。向下滚动到任何说python并结束进程的内容。你可能已经运行了python与其他东西。然后尝试再次运行你的python程序,它应该工作。
答案 2 :(得分:0)
下载的文件必须在文件的属性窗口中标记为“取消阻止” 在他们可以使用代码之前。