[英]Python Script to Find and Move Files
下面的python代碼的目的是找到rootdir1路徑內任何文件夾中包含的所有.jpg文件,並將所有文件移動到目標文件夾。
當我現場檢查代碼的工作時,我發現了一些沒有復制到目標文件夾的jpg。 我在代碼中缺少什么?
import os
import shutil
RootDir1 = r'/Users/brianwuollet/Desktop/Takeout'
TargetFolder = r'/Users/brianwuollet/Desktop/Photos'
for root, dirs, files in os.walk((os.path.normpath(RootDir1)), topdown=False):
for name in files:
if name.endswith('.jpg'):
print "Found"
SourceFolder = os.path.join(root,name)
shutil.copy2(SourceFolder, TargetFolder) #copies file to target folder
您應該修復縮進:
import os
import shutil
RootDir1 = r'/Users/brianwuollet/Desktop/Takeout'
TargetFolder = r'/Users/brianwuollet/Desktop/Photos'
for root, dirs, files in os.walk((os.path.normpath(RootDir1)), topdown=False):
for name in files:
if name.endswith('.jpg'):
print "Found"
SourceFolder = os.path.join(root,name) #<--- Here is the change
shutil.copy2(SourceFolder, TargetFolder) #<--- Here is the change
現在您正在循環外復制,因此並非所有文件都被復制
您的代碼縮進不正確。 線路:
SourceFolder = os.path.join(root,name)
shutil.copy2(SourceFolder, TargetFolder) #copies file to target folder
對於os.walk()
遍歷的每個目錄,只會執行一次,導致每個目錄只復制一個文件。 將您的代碼更改為:
for root, dirs, files in os.walk((os.path.normpath(RootDir1)), topdown=False):
for name in files:
if name.endswith('.jpg'):
print "Found"
SourceFolder = os.path.join(root,name)
shutil.copy2(SourceFolder, TargetFolder) #copies file to target folder
現在每個以“.jpg”結尾的文件都將被復制。
您也有可能覆蓋具有相同基本名稱的文件,如果您實際移動文件而不是復制文件,這可能會導致文件丟失。 您可以檢查目標目錄中是否已存在同名文件,然后打印警告,或者在復制時以某種方式重命名文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.