2017-02-09 70 views
0

我有很多文件夾。我要讓.zip文件的格式,並將其移動到另一個目錄:Python中的多任務處理,重新格式化和移動

for (dir, dirs, files) in os.walk(directory): 
     for filename in files: 
      # make zip files 
      if filename.endswith(".zip"): 
       # move created zip files 
       os.rename(dir + '/' + filename, new + '/' + directory + '/' + filename) 

的問題是,使zip文件後,程序無法找到zip擴展創建的文件。我想創建一個zip格式並將其移動到另一個文件夾。

回答

1

可以使用shutil LIB:

import shutil 
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo") 

shutil.move(SRC,DST)

遞歸移動文件或目錄(SRC)到另一個位置(DST)。

如果目的地是一個現有的目錄,那麼src被移動到 那個目錄中。如果目標已存在但不是 目錄,則可能會根據os.rename()語義覆蓋目標。

如果目標位於當前文件系統上,則使用os.rename()爲 。否則,複製src(使用shutil.copy2())到dst,然後刪除 。


您也可以使用shutil存檔文件:

shutil.make_archive(BASE_NAME,格式[,ROOT_DIR [,base_dir [, 詳細[,dry_run [,所有者[,組[,logger]]]]]]])

創建檔案 文件(例如zip或tar)並返回其名稱。

欲瞭解更多信息閱讀shutil documentation

+0

我已經編輯我的問題。我的問題是,當我有這麼多的文件,os.walk(目錄)讀取舊文件,而不是新創建的文件。 – TheNone

+0

@TheNone,一旦你改變了文件名,你將不會看到改變,直到你再次運行os.walk。一旦os.walk的代碼行被傳遞,你就得到了結果。爲了看到變化,你需要再次調用os.walk這樣你會得到新的結果。在迭代循環時不可能看到變化。 –

+0

有什麼方法可以動態循環? 1-創建壓縮文件,2-移動文件和...... – TheNone