これはおそらく簡単な質問ですが、私はPythonとプログラミング全般にまったく慣れていません。
ソースの場所のディレクトリ構造をミラーリングしながら、ある場所から別の場所に.mp3ファイルをコピー/移動する簡単なプログラムに取り組んでいます。これまでのところ機能していますが、ソースフォルダーにmp3ファイルが含まれていなくても、宛先の場所に新しいフォルダーが作成されます。ソースに .mp3 が含まれている場合にのみ、新しいディレクトリを作成したいと考えています。そうしないと、宛先に空のフォルダーが多数作成される可能性があります。
これが私がこれまでに持っているものです:
import os
import shutil #Used for copying files
##CONFIG
source_dir = "C:\Users\username\Desktop\iTunes\\" #set the root folder that you want to scan and move files from. This script will scan recursively.
destPath = "C:\Users\username\Desktop\converted From iTunes" #set the destination root that you want to move files to. Any non-existing sub directories will be created.
ext = ".mp3" #set the type of file you want to search for.
count = 0 #initialize counter variable to count number of files moved
##
##FIND FILES
for dirName, subdirList, fileList in os.walk(source_dir):
#set the path for the destination folder(s)
dest = destPath + dirName.replace(source_dir, '\\')
#if the source directory doesn't exist in the destination folder
#then create a new folder
if not os.path.isdir(dest):
os.mkdir(dest)
print('Directory created at: ' + dest)
for fname in fileList:
if fname.endswith(ext) :
#determine source & new file locations
oldLoc = dirName + '\\' + fname
newLoc = dest + '\\' + fname
if os.path.isfile(newLoc): # check to see if the file already exists. If it does print out a message saying so.
print ('file "' + newLoc + fname + '" already exists')
if not os.path.isfile(newLoc): #if the file doesnt exist then copy it and print out confirmation that is was copied/moved
try:
shutil.move(oldLoc, newLoc)
print('File ' + fname + ' copied.')
count = count + 1
except IOError:
print('There was an error copying the file: "' + fname + '"')
print 'error'
print "\n"
print str(count) + " files were moved."
print "\n"
フォルダ構造が次のような場合:
root->
band 1->
album name->
song.m4a,
song2.m4a
現在、コピーする .mp3 ファイルがなくても、コピー先のディレクトリにこれらすべてのフォルダーが作成されます.....
どんな助けでも大歓迎です!