在python中重命名文件名而不更改实际的数字顺序?

时间:2018-01-18 13:39:09

标签: 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]

    os.rename(a,(a+1))

print (files)

2 个答案:

答案 0 :(得分:0)

你有一个源目录(包含严重/相同的命名文件)和目标目录(包含不应覆盖的文件)。

我会:

  • 列出目标目录&和你一样(你的其余尝试显然都是......)
  • 获取最后一项并解析为整数(不带扩展名):添加1并提供下一个免费索引。
  • 源代码中的
  • 循环
  • 使用新的计算索引
  • 为当前文件生成新名称
  • 使用shutil.moveshutil.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))

答案 1 :(得分:0)

你可以这样做:

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重命名并将文件从第一个目录移动到第二个目录。