2016-06-08 37 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)