由于文件正在被其他进程使用,脚本无法移动文件的其余部分



我目前正在尝试制作一个脚本它取一个目录中的zipfile,检查zipfile是否包含一个特定的名称;如果是,它将把zip文件移动到另一个目录。

运行以下命令会移动第一个文件。但是,在移动第一个文件之后,它就失败了查看文件的其余部分,并给出这个错误。

"WindowsError: [Error 32]进程无法访问文件,因为它正在被另一个进程使用:(这里显示了文件的位置)">

我想知道是什么原因导致这个错误。

items = os.listdir(location)
Asset_list = os.listdir(drive_location)
def get_list():
for each in items:
new_location = drive_location + "\" + each
if ".zip" in each:
selected_zip = location + "\" + each
with ZipFile(str(selected_zip)) as zip:
list_of_files = zip.namelist()
for each in list_of_files:
if Asset_list[5] in each:
shutil.move(selected_zip, new_location)

您不能继续检查zip文件中的文件并同时将其移动到另一个位置。将"shutil.move"修改为"shutil.copy"或退出"with"代码块后再移动文件。你可以简单地添加一个标志,然后根据该标志的值进行复制:

items = os.listdir(location)
Asset_list = os.listdir(drive_location)
def get_list():

for each in items:
new_location = drive_location + "\" + each
if ".zip" in each:
to_move: bool = False
selected_zip = location + "\" + each
with ZipFile(str(selected_zip)) as zip:
list_of_files = zip.namelist()
for each in list_of_files:
if Asset_list[5] in each:
to_move = True
if to_move:
shutil.move(selected_zip, new_location)

虽然我不完全相信if Asset_list[5] in each:这行到底是什么意思。你是否在比较一个字符串是否包含在另一个字符串中?还是你想比较价值的平等?如果是后者,则需要将其更改为if Asset_list[5] == each:

最新更新