2014-02-21 26 views
0

第一個定時器這裏根據文件名的前兩個字母他人,溫柔:)移動文件從一個目錄到使用python

我非常缺乏經驗,在一般的編程,我一直在努力編寫一個python腳本,它將從一個目錄中獲取文件,按照文件名的前兩個字母對它們進行排序,在不同的目錄中爲它們創建文件夾(對文件具有相同的名稱),然後將它們移動到那裏。

因此,如果我們在同一個目錄下三個文件,例如:

  1. AB-0000-00
  2. AB-0001-00
  3. DC-0000-00

我希望第一個被移動到dir/中創建的文件夾AB-0000-00,產生dir/AB-0000-00/AB-0000-00

第二個應該結束爲dir/AB-0001-00/AB-0001-00

最後一個有不同的字母,所以我想要它去otherdir/DC-0000-00/DC-0000-00

我試着用幾種不同的方法編寫它(使用shutil來移動文件),但是處理文件名非常困難,並且不能生成獲得任何結果的代碼。我對列表的工作也很簡單,所以任何幫助都會非常非常感激。

非常感謝!


編輯:DNA和DSM建議我將問題分解成部分並嘗試單獨解決每個問題。這聽起來微不足道,但它是啓發性的,我設法將這些腳本全部自行編寫,然後將它們合併在一起! :)

Metacore爲我提供了我最初要求的大部分內容,所以這也是很多apprecaited!

+2

歡迎堆棧溢出!你的問題相當廣泛 - 你可以通過將你的問題分解成幾部分(獲得文件列表;按照前2個字母排序;等等),並在你遇到問題時提出一個具體的問題(到目前爲止顯示你的代碼)遇到問題,而不是主要要求我們爲您編寫整個程序。 – DNA

+1

把問題分解成小塊的另一個好處是,對每個問題找到答案要容易得多。例如,搜索「如何獲得Python中的文件列表」(儘管聽起來像您可能已經解決了這一部分),但有很多點擊。 – DSM

+0

偉大的建議,謝謝你們兩個。 :) – Berry

回答

1

這是你想要的嗎?

def sort_move(dir): 
    files = os.listdir(dir) #stores every filename as a list item ['f1.txt', 'f2.txt'..] 
    for name in files: #goes through the list item by item 
     folder = name.split('.')[0] #removes extension such as .txt 
     os.mkdir(dir + folder) #creates a new dir using filename 
     shutil.move(dir + name, dir + folder + '\\') #moves the file to its new folder, deletes old one 

sort_move('c:\\test_folder\\') 

我希望這可以讓你在正確的方向:)

相關問題