关于使用os.path.join时文件名内就含有/符号的处理

在做世界银行数据的文件名转换时,发现总有一些文件改名失败,仔细一看是文件名内部就含有/符号导致的

 解决方案:将/替换为'或'或其他字符即可

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()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值