为什么我的代码不断重命名我的文件 "Playlist"?
Why does my code keep renaming my file "Playlist"?
我正在用 python 制作一个音乐播放器,我添加了“将歌曲添加到播放列表”功能,它将打开资源管理器,用户可以 select 一个音乐文件然后将该文件复制到一个名为 Playlist 的不同目录中。
os.chdir("./playlist")
print(os.getcwd)
songlist = os.listdir()
playlistloc = "./playlist"
def browse_file():
global filename_path
filename_path = filedialog.askopenfilename()
print(filename_path)
add_to_playlist(filename_path)
def add_to_playlist(filename):
filename = os.path.basename(filename)
shutil.copyfile(filename_path, playlistloc)
我不知道为什么它一直称它为播放列表,但它确实播放了那首歌。
请帮助,通常不知道为什么会这样,是否与 shutil 有关?
可能对 shutil.copyfile
的工作原理存在误解。根据文档,dst
参数应该是 完整的目标文件名 。这意味着应该使用文件夹路径 和 文件名。
换句话说,它的工作方式是不是这样的:
shutil.copyfile("./some/location/with/song1.mp3", "./destination/location")
而是:
shutil.copyfile("./some/location/with/song1.mp3", "./destination/location/song1.mp3")
所以这是一个例子,我更改了一些变量名,使它们在 add_to_playlist
函数中更明确:
os.chdir("./playlist")
print(os.getcwd)
songlist = os.listdir()
playlistloc = "./playlist"
def browse_file():
global filename_path
filename_path = filedialog.askopenfilename()
print(filename_path)
add_to_playlist(filename_path)
def add_to_playlist(src_filename_path):
src_filename = os.path.basename(src_filename_path) # get the filename alone
dst_filename_path = os.path.join(playlistloc, src_filename) # build the destination full path: concat the filename to the destination location
shutil.copyfile(src_filename_path, dst_filename_path) # do the copy
我正在用 python 制作一个音乐播放器,我添加了“将歌曲添加到播放列表”功能,它将打开资源管理器,用户可以 select 一个音乐文件然后将该文件复制到一个名为 Playlist 的不同目录中。
os.chdir("./playlist")
print(os.getcwd)
songlist = os.listdir()
playlistloc = "./playlist"
def browse_file():
global filename_path
filename_path = filedialog.askopenfilename()
print(filename_path)
add_to_playlist(filename_path)
def add_to_playlist(filename):
filename = os.path.basename(filename)
shutil.copyfile(filename_path, playlistloc)
我不知道为什么它一直称它为播放列表,但它确实播放了那首歌。 请帮助,通常不知道为什么会这样,是否与 shutil 有关?
可能对 shutil.copyfile
的工作原理存在误解。根据文档,dst
参数应该是 完整的目标文件名 。这意味着应该使用文件夹路径 和 文件名。
换句话说,它的工作方式是不是这样的:
shutil.copyfile("./some/location/with/song1.mp3", "./destination/location")
而是:
shutil.copyfile("./some/location/with/song1.mp3", "./destination/location/song1.mp3")
所以这是一个例子,我更改了一些变量名,使它们在 add_to_playlist
函数中更明确:
os.chdir("./playlist")
print(os.getcwd)
songlist = os.listdir()
playlistloc = "./playlist"
def browse_file():
global filename_path
filename_path = filedialog.askopenfilename()
print(filename_path)
add_to_playlist(filename_path)
def add_to_playlist(src_filename_path):
src_filename = os.path.basename(src_filename_path) # get the filename alone
dst_filename_path = os.path.join(playlistloc, src_filename) # build the destination full path: concat the filename to the destination location
shutil.copyfile(src_filename_path, dst_filename_path) # do the copy