繁体   English   中英

os.rename给出[WinError 32]该进程无法访问文件,因为该文件正在被另一个进程使用:

[英]os.rename gives [WinError 32] The process cannot access the file because it is being used by another process:

美好的一天,我有一个python脚本,可以在CSV外观中的目录中循环查找某些变量,然后根据这些变量重命名它们。 当我收到[WinError 32]时,一切正常,直到重命名为止。该进程无法访问该文件,因为该文件正被另一个进程使用:错误。 关闭了所有应用程序,但仍然出现错误。 提前致谢

码:

import os

import csv

print(os.getcwd()) # check to see current directory

os.chdir('\\DataLoad\\Qualities\\Aug-2018') 

for dirname, dirnames, filenames in os.walk('.'):   

    for filename in filenames: # print path to all filenames.

        if filename[-3:] == 'csv':  
            print(os.path.join(filename)) # (os.path.join(dirname, filename))
            file_name = os.path.join(filename)

            with open(file_name, newline='') as f:
                reader = csv.reader(f)
                header = next(reader) # reads first line of csv - HEADER line
                row1 = f.readlines()[1]
                borehole = row1.split(',')[3].upper()

                if header[13] == 'Yield':
                    NewFile = 'WASH_' + borehole + '.csv'
                    os.rename(file_name, NewFile)

                elif header[13] == 'Min S':
                    NewFile = 'SPECIAL_' + borehole + '.csv'
                    os.rename(file_name, NewFile)
                elif header[13] == 'Ad TS':
                    NewFile = 'PROX_' + borehole + '.csv'
                    os.rename(file_name, NewFile)
                else:
                    NewFile = 'OTHER_' + borehole + '.csv'
                    os.rename(file_name, NewFile)

你有

with open(file_name, newline='') as f

在那个方块里面

    os.rename(file_name, NewFile)

因此您的脚本本身在您要重命名的文件上有一个打开的句柄,这就是您收到错误的原因。

由于文件的读取是在if语句之前完成的,因此您可以取消缩进以使它们位于with块之外:

with open(file_name, newline='') as f:
    reader = csv.reader(f)
    header = next(reader) # reads first line of csv - HEADER line
    row1 = f.readlines()[1]
    borehole = row1.split(',')[3].upper()

if header[13] == 'Yield':
    NewFile = 'WASH_' + borehole + '.csv'
    os.rename(file_name, NewFile)

elif header[13] == 'Min S':
    NewFile = 'SPECIAL_' + borehole + '.csv'
    os.rename(file_name, NewFile)
elif header[13] == 'Ad TS':
    NewFile = 'PROX_' + borehole + '.csv'
    os.rename(file_name, NewFile)
else:
    NewFile = 'OTHER_' + borehole + '.csv'
    os.rename(file_name, NewFile)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM