2016-06-08 96 views
1

我在Python编程中颇为新颖,我尝试使用pyhthon命名100个文件并使用“.jpg”扩展名,位于特定文件夹中。如何使用Python重命名运行顺序的JPG文件

我需要的文件会被运行命令开始从1号改名这是我的代码开始写:

import os,glob,fnmatch 

os.chdir(r"G:\desktop\Project\test") 
for files in glob.glob("*.jpg"): 
    print files 

当我运行它,我得到:

>>> 
er3.jpg 
IMG-20160209-ssdeWA0000.jpg 
IMG-20160209-WA0000.jpg 
sd4.jpg 
tyu2.jpg 
uj7.jpg 
we3.jpg 
yh7.jpg 
>>> 

所以代码,直到现在确定。

例如我的文件夹为:

enter image description here

,我需要的所有文件名称将是: 1,2,3,4 - 与运行命令的名称。 python 2.7有可能吗?

+0

'为文件名排序中(glob.glob( “* JPG”)):'也许? – Evert

回答

2

如果你只是想将所有文件重命名为1.jpg,你可以这样做2.jpg等:

import os 
import glob 

os.chdir(r"G:\desktop\Project\test") 
for index, oldfile in enumerate(glob.glob("*.jpg"), start=1): 
    newfile = '{}.jpg'.format(index) 
    os.rename (oldfile,newfile) 

enumerate()被用来从返回的列表获取每个文件的索引通过​​3210,以便它可以用来创建新的文件名。请注意,它允许你指定开始索引,所以我从1开始,而不是Python标准,从零开始

如果你想要这个文件列表可以正确排序,你需要填充文件名也有零(001.jpg等)。在这种情况下,只需将替换为newfile = '{:03}.jpg'.format(index)即可。

the docs更多关于str.format()

+0

它可以适应这个来处理jpg和png吗? – Maverick

+0

@Maverick:当然。不幸的是,'glob.glob()'一次只能匹配一个扩展名,但是您可以轻松地运行循环两次,用'jpg'替换'png'。还有其他更有效的方法,它非常依赖于你期望的输出。 – SiHa

0

重命名特定文件夹中的所有JPG文件首先,获取文件夹中包含的所有文件的列表。

os.listdir会给你列出图片路径中的所有文件。

使用enumerate获取索引号以获取 图像的新名称。

import os 
images_path = r"D:\shots_images" 
image_list = os.listdir(images_path) 
for i, image in enumerate(image_list): 
    ext = os.path.splitext(image)[1] 
    if ext == '.jpg': 
     src = images_path + '/' + image 
     dst = images_path + '/' + str(i) + '.jpg' 
     os.rename(src, dst)