Переименуйте имена файлов в папке с помощью Python Script, используя карту имен из листа Excel - PullRequest
0 голосов
/ 13 мая 2019

В папке много CSV-файлов, которые я хочу переименовать. Существует лист Excel, содержащий имена файлов, которые нужно переименовать в папку.

Файлы в папке называются

TestData_30April.csv

TestData_20April.csv

TestData_18April.csv и т. Д.

в то время как лист Excel содержит имя как

0,25 * TestData_30April 1013 *

0,98-TestData_20April

0,33-TestData_20 апреля и т. Д.

Моя цель - переименовать

"TestData_30April.csv" в "0.25-TestData_30April.csv" аналогично для всех других файлов.

Вот код, который я написал (который не работает должным образом)

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"

#Folder Containg all orginal file names

dir = "C:\\Users\\Desktop\\Wear_Data"

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

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 location'.format(name.split('-')[1]+'.csv')

1 Ответ

1 голос
/ 13 мая 2019

Edit2: в соответствии с примером файла 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))

старый ответ

Edit: содержимое файла "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
...