フォルダー内を歩き回り、ファイル拡張子に応じてフォルダーを作成しようとしました。しかし予期せぬ理由から、1つのファイルだけがコピーされ、スクリプトは次のファイルに切り替わります。私はフォルダが適切に作成され、1つのファイルがコピーされるので、ベースが良いと思う。だから、なぜ他のすべてがコピーされていないのですか?フォルダーの作成後にすべてのファイルがコピーされない理由
誰かがなぜそれを理解するのを助けることができますか?
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
コピーファイルは、既存のファイルを上書きされる可能性があります。なぜ 'os.rename'を使わないのですか? –
@COLDSPEED source dirにあるすべてのファイルをコピーする必要があります。そしてすべてのファイルは別の名前を持っています – charter77
@COLDSPEED 'os.rename'はbashの' mv'に相当し、ファイルを移動しますか? – cmaher