我嘗試遍歷文件夾並根據文件擴展名創建文件夾,然後在該文件夾中複製所有相關文件。但出於意想不到的原因,只有一個文件被複制,並在下一個文件切換腳本。我認爲基礎很好,因爲文件夾已正確創建並且一個文件被複制。那麼爲什麼所有其他人都不復制?爲什麼不是在創建文件夾後複製的所有文件
有人可以幫我弄清楚爲什麼?
import os
import shutil
dir = "/home/user/Documents/utils/testFindAndCopy"
target = "/home/user/Documents/utils/result"
def createDir(target):
os.makedirs(str(target))
def copyFiles(file, target):
shutil.copy2(file, target)
for subdir, dirs, files in os.walk(dir):
for file in files:
filepath = subdir + os.sep + file
folderName = file.split('.')
targetDir = target + '/' + str(folderName[1])
try:
if os.path.exists(str(folderName)):
print(folderName[1])
print(targetDir)
print(filepath)
copyFiles(filepath, targetDir)
else:
createDir(str(targetDir))
copyFiles(filepath, targetDir)
print(folderName[1])
print(targetDir)
print(filepath)
except OSError, e:
if e.errno != 17:
raise
# time.sleep might help here
pass
copyFiles可能會覆蓋現有文件。你爲什麼不使用'os.rename'? –
@COLDSPEED我需要複製源目錄中的所有文件。並且所有文件都有不同的名稱 – charter77
@COLDSPEED'os.rename'相當於bash中的'mv',只是移動文件,不是? – cmaher