У меня есть несколько файлов в директории,Переименование файлов в samekind через Python
file_IL.txt
file_IL.csv
file_NY.txt
file_NY.csv
мне придется переименовать их так что они получают порядковый номер. Например,
file_IL.txt_001
file_IL.csv_001
file_NY.txt_002
file_NY.csv_002
Я написал следующий код Python
def __init__(self):
self.indir = "C:\Files"
def __call__(self):
found = glob.glob(self.indir + '/file*')
length = len(found)
counts = {}
for num in found:
ext = num.rsplit(".",1)[-1] # Right split to get the extension
count = counts.get(ext,0) + 1 # get the count, or the default of 0 and add 1
shutil.copy(num, num+'_'+'%03d' % count) # Fill to 3 zeros
counts[ext] = count # Store the new count
Это работает на время, но затем в раз он выдает результат, как показано ниже,
file_IL.txt_001
file_IL.csv_002
file_NY.txt_002
file_NY.csv_001
То, что я хочу, это файлы одного и того же рода, даже если они имеют другое расширение, чтобы иметь такое же количество. Я сейчас потеряюсь, может кто-то, пожалуйста, помогите мне?
Почему используется 'shutil.copy' вместо' os.rename'? – kren470
Потому что я не должен перезаписывать файлы. Я должен хранить файл с каждого этапа. – user1345260
Возможно, '' glob() '' не гарантирует возврат списка, отсортированного по имени файла. – fjarri