Я изменил ваш код, чтобы использовать регулярное выражение, чтобы найти правильный формат файла и игнорировать последний CSV, который вы упомянули. После правильного сопоставления он использует встроенные библиотеки os и shutil для переименования файлов csv в новый формат, который вы указали.
import shutil, os, re
# create a regex that finds files
# within the specified directory
# that fits the format you wrote about
# above
# Essentially, this regex statement is saying look
# for the following pattern [any amount of letters]_[3 digits]_[4 digits].csv
file_format_pattern = re.compile(r'[\w]+_[\d]{3}_[\d]{4}\.csv')
path = r'A:\Engineering'
for file in os.listdir(path):
# Loop over the files in the working directory.
correct_file = file_format_pattern.search(file)
# Skip files that aren't in the correct format
if correct_file:
f_name, f_ext = os.path.splitext(file)
f_site, f_strings, f_year = f_name.split('_')
# New Filename with 245 format instead of 255
new_filename = f_site + "_245_" + f_year + f_ext
# Get the full, absolute file paths.
absWorkingDir = os.path.abspath(path)
original_file = os.path.join(absWorkingDir, file)
renamed_file = os.path.join(absWorkingDir, new_filename)
# With shutil rename original filenames to new filename format
shutil.move(original_file, renamed_file)
Вы можете научиться множеству интересных способов упорядочить, переписать, прочитать и изменить файлы автоматически, следуя этой удивительной книге по автоматизации под названием «Автоматизация скучного материала» Аль Суигарта.
Это бесплатно онлайн здесь и учит вас, как использовать Python для автоматизации в понятной форме.
Я в основном следовал главе здесь , чтобы помочь с вашим вопросом.
Чтобы лучше понять шаблоны регулярных выражений, ознакомьтесь с главой 7 книги. Я работал над этим на моей рабочей станции, и он правильно переименовал файлы CSV в формате 255 и проигнорировал окончательный CSV.
Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы, и надеюсь, что это поможет. Ура!