在python中重命名文件名而不更改实际的数字顺序?
我有如下文件: 00001.jpg 00002.jpg . . . 01907.jpg 我想向这个目录中添加一些同名的文件。但他们的名字应该像这样继续下去 01908.jpg 01909.jpg . . 12906.jpg 我没办法做到。我怎样才能做到这一点 非常感谢:) 我试过了在python中重命名文件名而不更改实际的数字顺序?,python,renaming,Python,Renaming,我有如下文件: 00001.jpg 00002.jpg . . . 01907.jpg 我想向这个目录中添加一些同名的文件。但他们的名字应该像这样继续下去 01908.jpg 01909.jpg . . 12906.jpg 我没办法做到。我怎样才能做到这一点 非常感谢:) 我试过了 import os files=[] files = sorted(os.listdir('directory')) b=len(files) for i in range(0,b): a=files[i
import os
files=[]
files = sorted(os.listdir('directory'))
b=len(files)
for i in range(0,b):
a=files[i]
os.rename(a,(a+1))
print (files)
您有一个源目录(其中包含命名错误/相同的文件)和一个目标目录(其中包含不应被覆盖的文件)
我想:
- 像您那样列出目标目录和排序(您的其余尝试显然已关闭…)
- 获取最后一项并解析为整数(不带扩展名):添加1,这将给出下一个自由索引
- 在源目录中循环
- 使用新的计算索引为当前文件生成新名称
- 使用
或shutil.move
以新名称移动/复制新文件shutil.copy
import os,shutil
s = "source_directory"
d = "target_directory"
files = sorted(os.listdir(d))
highest_index = int(os.path.splitext(files[-1])[0])+1
for i,f in enumerate(sorted(os.listdir(s)),highest_index):
new_name = "{:05}.png".format(i)
shutil.copy(os.path.join(s,f),os.path.join(d,new_name))
您可以这样做:
import os
directory1 = 'path to the directory you want to move the files to'
directory2 = 'path to the directory you want to move the files to'
for file in ordered(os.listdir(directory2)):
counter = len(os.listdir(directory1))
file_number = int(file.split('.')[0]) #Get the file number
os.rename(os.path.join(directory2, file), os.path.join(directory1 + str(file_number + counter)))
我所做的:
- 在我想要重命名和移动的文件上循环
- 在文件将要移动到的主目录中找到了文件数,我假设它将与此目录中最后一个文件的名称相同,并确保它将不断更新自身,以便不会发生覆盖
- 然后我得到了循环中当前文件的编号
- 最后,我使用
重命名文件并将其从第一个目录移动到第二个目录os.rename