在做世界银行数据的文件名转换时,发现总有一些文件改名失败,仔细一看是文件名内部就含有/符号导致的
解决方案:将/替换为'或'或其他字符即可
def change_dataset_name():
'''转换原文件至中文'''
config = {
'data_packet': '数据包', #数据包路径
'rawdata': '世界银行WDI数据-官方原始格式-2023.2.14', #原始数据包名
'index_ref': '世界银行WDI数据-指标索引对照表 2023.2.14.xlsx' #指标对照表名
}
def add_suffix(name):
'''为每个指标加上后缀,方便改名'''
return df[name].map(lambda x: x + '.xls').tolist()
index_ref_path = os.path.join(config['data_packet'], config['index_ref'])
rawdata_path = os.path.join(config['data_packet'], config['rawdata'])
index_ref = pd.read_excel(index_ref_path)
df = pd.read_excel(index_ref_path)
old_name = add_suffix('indicator_code\n指标代码')
new_name = add_suffix('indicators_cn\n参考中文名称')
for i in old_name:
old_file_path = os.path.join(rawdata_path, i)
new_name_file = new_name[old_name.index(i)]
if '/' in new_name_file:
'''如果路径中有反斜杠会报错,所以改成或'''
new_name_file = new_name_file.replace('/', '或')
new_file_path = os.path.join(rawdata_path, new_name_file)
try:
os.rename(old_file_path, new_file_path)
except Exception as e:
print(e)
print('转换结束,由于有些数据命名相同会报错,只需用其中一个即可')
change_dataset_name()