我编写了 python 代码来组织 40G 的音乐,但它只适用于我的计算机,所以我想概括代码,以便它可以在任何计算机的任何目录中工作。
import os #imports os functions
import eyed3 #imports eyed3 functions
import errno
import shutil
root_folder = os.getcwd()
files = os.listdir(root_folder) #lists all files in specified directory
for file_name in files:
if file_name.endswith('.mp3'): #if file ends with ".mp3" it continues onto the next line
abs_location = '%s/%s' % (root_folder, file_name)
try:
song_info = eyed3.load(abs_location) #loads each file into eyed3 and assignes the return value to song_info
except IOError:
pass
if song_info.tag is None:
print 'Skipping %s' % abs_location
continue
if song_info is None:
print 'Skipping %s' % abs_location
continue
print 'Skipping %s' % abs_location
continue
try:
os.mkdir(os.path.expanduser('~/Desktop/mp3-organizer/%s' % song_info.tag.artist))
except OSError as e:
if e.errno!= errno.EEXIST:
raise
except UnicodeDecodeError:
pass
try:
os.mkdir(os.path.expanduser('~/Desktop/mp3-organizer/%s/%s' % (song_info.tag.artist, song_info.tag.album)))
except OSError as e:
if e.errno!= errno.EEXIST:
raise
except OSError:
continue
print song_info
print song_info.tag.artist
try :
shutil.move('%s' % file_name, '%s/%s' % (song_info.tag.artist, song_info.tag.album))
except UnicodeDecodeError:
pass
except shutil.Error:
try:
os.renames('%s' % file_name, '%s_%s' % (file_name, song_info.tag.artist))
except OSError:
pass
else:
pass
#improvements
#have this work on other computers
我想将使用“~/Desktop/mp3-organizer/”的行更改为“root_folder/%s”% song_info.tag.artist,其中“root_folder”=当前工作目录
但我知道那行不通,我只是不知道如何“用词”它。
回顾一下,目标是让代码在放置脚本的目录中运行。不仅适用于我计算机中的特定目录。
感谢任何帮助