2013-08-23 43 views
0

是否可以通過os.rename或shutil.move將目錄中的所有文件移動到同一目錄的子目錄中?以編程方式將文件移動到子目錄(不使用unix mv命令)

例如,如果我有以下結構:

  • DIR_1
    • File_1
    • File_2
    • subDir_1

我可以得到以下結構:

  • DIR_1
    • subDir_1
      • File_1
      • File_2 ?

Best.-

編輯:最後,我用下面的代碼解決我的問題:

for fname in os.listdir(src): 
     if os.path.isfile(os.path.join(src, fname)): 
     os.rename(os.path.join(src, fname), os.path.join(dst, fname)) 

非常感謝你們兩個!

+1

[Python中移動文件(HTTP的可能重複://計算器的.com /問題/ 8858008 /運動一個文件合蟒)。唯一的區別是你需要遍歷文件系統,使用'listdir':http://stackoverflow.com/questions/3207219/how-to-list-all-files-of-a-directory-in-python – J0HN

+0

偉大!這是我一直在尋找一段時間但我找不到的鏈接!非常感謝! – pafede2

回答

0

我希望這能幫助:

import shutil,os,os.path 


def walk(top): 
    directory = None 
    for root, dirs, files in os.walk(top, topdown=False): 
     for name in dirs: 
      directory = os.path.join(root, name) 
     for name in files: 
      f1 = os.path.join(root, name) 
      if not f1.endswith('.py') and directory: 
       shutil.move(f1,directory) 


walk(os.path.realpath(os.curdir)) 

我這個試了一下FS的樹,它的工作原理:

-d/ 
    |-s/ 
    |-new file.txt 
    |-new file1.txt 
    |-move.py 
相關問題