Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python脚本的帮助下,使用Excel工作表中的名称映射重命名文件夹中的文件名_Python_Xlrd - Fatal编程技术网

在Python脚本的帮助下,使用Excel工作表中的名称映射重命名文件夹中的文件名

在Python脚本的帮助下,使用Excel工作表中的名称映射重命名文件夹中的文件名,python,xlrd,Python,Xlrd,文件夹中有许多CSV文件,我想重命名这些文件。有一个excel工作表,其中包含要重命名为文件夹的文件的名称 文件夹中的文件名为 TestData_30April.csv TestData_20April.csv TestData_18April.csv等 而excel工作表包含的名称为 0.25-TestData\u 4月30日 0.98-TestData_204; 4月 0.33-TestData\u 20April等 我的目标是重新命名 “TestData_30April.csv”到“0.2

文件夹中有许多CSV文件,我想重命名这些文件。有一个excel工作表,其中包含要重命名为文件夹的文件的名称

文件夹中的文件名为

TestData_30April.csv

TestData_20April.csv

TestData_18April.csv等

而excel工作表包含的名称为

0.25-TestData\u 4月30日

0.98-TestData_204; 4月

0.33-TestData\u 20April等

我的目标是重新命名

“TestData_30April.csv”到“0.25-TestData_30April.csv”,同样适用于所有其他文件

下面是我编写的代码(没有按预期工作)

编辑2: 根据excel文件示例,尝试以下代码:

import os 
with open('myfile.csv', encoding='utf-8') as f:
    buff = f.read()

buff = buff.splitlines()[1:]

for data in buff:
    data = data.split(',')
    old_name, new_name = data[21] + '.csv', data[23] + '.csv'

    if os.path.exists(old_name):
        print('changing file name {} to {}'.format(old_name,new_name))
        os.rename(old_name, new_name)
    else:
        print('no file {} with name found in location'.format(old_name))
旧答案

编辑: 以下示例中文件“myfile.csv”的内容为:

0.25-TestData_30April
0.98-TestData_20April
0.33-TestData_20April 
如果您在读取文件时遇到问题,请首先确保它是csv格式的文件,并且可以在任何文本编辑器中打开它,如果仍然存在问题,可以尝试使用encoding='utf-8'打开它:

with open('myfile.csv', , encoding='utf-8') as f:
        file_names = f.read().split()
你可以试试这个简单的代码,基于你的excel文件是csv文件

import os

with open('myfile.csv') as f:
    file_names = f.read().split()

for name in file_names:
    new_name = name + '.csv'
    old_name = name.split('-')[-1] + '.csv'
    if os.path.exists(old_name):
        print('changing file name {} to {}'.format(old_name,new_name))
        os.rename(old_name, new_name)
    else:
        print('no file {} with name found in location'.format(old_name))
测试输出:

changing file name TestData_30April.csv to 0.25-TestData_30April.csv
no file TestData_20April.csv with name found in location
no file TestData_20April.csv with name found in location

您能格式化您的代码部分吗?您是否面临特定错误?什么不起作用?当我运行脚本时,文件夹中的文件名没有重命名。您是否收到任何错误消息?始终将完整的错误消息(完整回溯)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息.dir_file_name=os.path.join(path_to_folder,name.split('-')[1],'.csv')索引器:列表索引超出范围UnicodedeCodeError:'charmap'编解码器无法解码位置700中的字节0x90:字符映射到@PriyankaMishra确保包含新名称的excel文件是csv格式,如果是,在open()中使用
encoding='utf-8'
,即
以open('myfile.csv',encoding='utf-8')作为f:
Sir,在location中找不到名为的文件TestData\u 20April.csv。Sir,excel工作表包含从A列到P列的一些数据,但X列包含要重命名为该文件夹的文件名。您的excel文件是csv文件吗?excel文件的扩展名或类型是什么?
changing file name TestData_30April.csv to 0.25-TestData_30April.csv
no file TestData_20April.csv with name found in location
no file TestData_20April.csv with name found in location