为什么我的代码不断重命名我的文件"Playlist"?



我正在用python制作一个音乐播放器,我添加了"将歌曲添加到播放列表";该功能将打开资源管理器,用户可以选择一个音乐文件,然后将该文件复制到名为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.copyfile的工作方式可能存在误解。根据文档,dst参数应该是完整的目标文件名。这意味着应该使用文件夹路径文件名。

换句话说,它的工作方式是NOT如下:

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

最新更新