我正在尝试使用os模块重命名目录中的某些文件,但出现错误
回溯(最近一次通话最后一次):文件“ rename.py”,第32行,在 Rename()文件“ rename.py”,第28行,在Rename中 os.rename((final_directory +'/'+ file),(final_directory +'/'+ file.replace('。csv','_1m.csv')))Windows错误: [错误183]该文件已存在时无法创建文件
我正在尝试使用唯一的名称重命名8个csv文件,我看到第一个if语句返回错误,但是当我删除其他7个elif语句时,此方法有效!
任何帮助将不胜感激!
这是文件源文件名
india_2018-10-25 (1).csv
india_2018-10-25 (2).csv
india_2018-10-25 (3).csv
india_2018-10-25 (4).csv
india_2018-10-25 (5).csv
india_2018-10-25 (6).csv
india_2018-10-25 (7).csv
india_2018-10-25.csv
这是代码
import os
def Rename():
current_directory = os.getcwd()
final_directory = os.path.join(current_directory, r'data')
if not os.path.exists(final_directory):
os.makedirs(final_directory)
for file in os.listdir(final_directory):
#print(file)
if "(" not in file:
os.rename((final_directory+'/'+file), (final_directory+'/'+file.replace('.csv', '_1m.csv')))
elif file.endswith('(1).csv'):
os.rename((final_directory+'/'+file), (final_directory+'/'+file.replace(' (1)', '_5m')))
elif file.endswith('(2).csv'):
os.rename((final_directory+'/'+file), (final_directory+'/'+file.replace(' (2)', '_15m')))
elif file.endswith('(3).csv'):
os.rename((final_directory+'/'+file), (final_directory+'/'+file.replace(' (3)', '_1h')))
elif file.endswith('(4).csv'):
os.rename((final_directory+'/'+file), (final_directory+'/'+file.replace(' (4)', '_4h')))
elif file.endswith('(5).csv'):
os.rename((final_directory+'/'+file), (final_directory+'/'+file.replace(' (5)', '_1D')))
elif file.endswith('(6).csv'):
os.rename((final_directory+'/'+file), (final_directory+'/'+file.replace(' (6)', '_1W')))
elif file.endswith('(7).csv'):
os.rename((final_directory+'/'+file), (final_directory+'/'+file.replace(' (7)', '_1M')))
else:
pass
Rename()
答案 0 :(得分:1)
问题是Windows操作系统不区分大小写。
程序在insert into appserver_prop (environment_id, property_id)
select 497, property_id
from prop_info
where property_name like '%CPNIB%';
中循环时,它已经将文件重命名为india_2018-10-25 (7).csv
。当您尝试将文件india_2018-10-25_1M.csv
另存为india_2018-10-25.csv
时,由于该文件已经存在,india_2018-10-25_1m.csv
返回错误。
解决方案:在区分大小写的基础上,确保重命名条件是唯一的。
此外,最好遵循DRY惯例并简化代码:
os
答案 1 :(得分:1)
您正在尝试将文件重命名为文件夹中已经存在的名称。
确保您在values
而不是india_2018-10-25.csv
上排名第一。
找到一种方法来确定原始的cav名称
india_2018-10-25 (7).csv