Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中重命名文件名而不更改实际的数字顺序?_Python_Renaming - Fatal编程技术网

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

在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

我有如下文件: 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)
您有一个源目录(其中包含命名错误/相同的文件)和一个目标目录(其中包含不应被覆盖的文件)

我想:

  • 像您那样列出目标目录和排序(您的其余尝试显然已关闭…)
  • 获取最后一项并解析为整数(不带扩展名):添加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
    重命名文件并将其从第一个目录移动到第二个目录

到目前为止您尝试了什么?列出目录,获取最后一个文件,计算开始索引,使用重命名进行复制。试试看。我编辑了这篇文章。现在我投了4张反对票(甚至是微弱的)?来吧另外:directory2+文件很难看。使用os.path.joinNoted,只是想写一些简单的东西。