2016-07-29 28 views
2

我是一個完整的Python初學者。我需要重命名一堆名稱中包含日期的文件。名字看起來都像:如何使用python重命名一堆文件?

  • front 7.25.16
  • left 7.25.16
  • right 7.25.16

我想他們開始日期而不是離開,或 ,所以front 7.25.16變成7.25.16 front

我一直在使用正則表達式os.walk試過,我遇到了既麻煩。現在我只是試圖打印文件名來證明os.walk正在工作。現在我的代碼看起來像這樣:

import re, shutil, os 

K = re.compile(r"(\d+.\d+.\d+)") 
RE_Date = K.search("front 7.25.16") 

for root, dirs, filenames in os.walk("path"): 
    for filename in filenames: 
     print ("the filename is: " + filename) 
    print ("") 

任何意見將不勝感激。

+0

[重命名文件在Python(的可能的複製http://stackoverflow.com/問題/ 2759067 /在python重命名文件) –

+2

你需要擴大「我遇到麻煩」。什麼具體不工作? –

+0

以'os.walk'開頭返回'root,dirs,files'的三倍... –

回答

1

檢查此示例以根據需要重命名文件。

import os 

filenames = ["front 7.25.16.jpg", "left 7.25.16.jpg", "right 7.25.16.jpg"] 

for file_name in filenames: 
    x = file_name.split(' ')[0] 
    y = file_name.split(' ')[1] 
    new_name = '{} {}{}'.format(os.path.splitext(y)[0], x, os.path.splitext(y)[-1]) 
    print new_name 

輸出:

7.25.16 front.jpg 
7.25.16 left.jpg 
7.25.16 right.jpg 

在你的代碼,你可以使用os.rename要重命名的文件

import os 

for root, dirs, filenames in os.walk("path"): 
    for file_name in filenames: 
     x = file_name.split(' ')[0] 
     y = file_name.split(' ')[1] 
     new_name = '{} {}{}'.format(os.path.splitext(y)[0], x, os.path.splitext(y)[-1]) 
     file_path = os.path.join(root, file_name) 
     new_path = os.path.join(root, new_name) 
     os.rename(file_name, new_path) 
+0

我現在遠離我的電腦,所以我無法檢查它,但是謝謝你,看起來它會工作。如果他們都是.jpg,是否有任何問題? – AutomateMyJob