使用Excel中的名称映射,使用Python重命名文件夹中的文件

时间:2019-05-03 06:35:32

标签: python

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

文件夹中的文件命名为

TestData_30April.csv

TestData_20April.csv

TestData_18April.csv etc

而Excel工作表中的名称为

0.25-TestData_30April.

0.98-TestData_20April

0.33-TestData_20April

我的目标是重命名

从“ TestData_30April.csv”到“ 0.25-TestData_30April.csv”

类似

"TestData_20April.csv" to "0.98-TestData_20April" etc.

我的问题定义与此类似。这是链接“使用Python,使用Excel中的名称映射重命名文件”

请帮助我是python的新手。

这是守则,它不起作用

import os

import xlrd

**#Excel Sheet containing name of files to be renamed in that folder**

path="C:\\Users\\Desktop\\Test_Data\\Test_Summary.xlsx"

wb = xlrd.open_workbook(path) 

sheet = wb.sheet_by_index(0)

sheet.cell_value(0, 0)

**#In excel sheet column X or col_values(23) contains the file name to be renamed**

print(sheet.col_values(23))  

new_names = sheet.col_values(23)

for new_name in sheet.col_values(23):



if '-' in new_name:

    old_name = new_name.split("-")[1]

    if os.path.isfile(os.path.join(dir, old_name)):

        os.rename(os.path.join(dir, old_name), os.path.join(dir, new_name))

请帮助我成为python的新手

2 个答案:

答案 0 :(得分:2)

list_of_filename_in_folder = [] # name of the files in the folder
list_of_filename_in_excel = [] #name of the files in excel

path_to_folder = ''  # base path of folder  

for name in list_of_filename_in_excel:
    excel_file_name = os.path.join(path_to_folder, name,'.csv')
    dir_file_name = os.path.join(path_to_folder,name.split('-')[1],'.csv' )
    if os.path.exists(dir_file_name):
      print('changing file name {} to {}'.format(name.split('-')[1],name))
      os.rename(dir_file_name, excel_file_name)
    else:
      print('no file {} with name found in project location'.format(name.split('-')[1]+'.csv')

答案 1 :(得分:0)

excel工作表中的文件名不包含扩展名.csv,因此 if (result->IsPromise()) { Local<Promise> promise = result.As<Promise>(); if (promise->HasHandler()) { while (promise->State() == Promise::kPending) { Isolate::GetCurrent()->RunMicrotasks(); } if (promise->State() == Promise::kRejected) { Nan::ThrowError(promise->Result()); } else { // ... procses promise->Result() ... } } } 是不带扩展名的文件名,而old_name检查完整文件名,并且仅在文件名和扩展名都为true时返回true匹配。

将扩展名附加到Excel工作表中,然后重试,它应该可以正常工作。

os.path.isfile