如何用.replace方法替换通用目录路径而非特定目录路径?
解决方案
不用纠结replace的通用子串,直接用Python标准库的路径处理工具更靠谱,推荐两种方法:
方法1:使用
os.path模块的basename函数
这个函数专门用来提取路径中的文件名部分,不管你选的文件在哪个目录下,都能直接拿到文件名。修改后的代码如下:import os from tkinter import filedialog def add_song(): song = filedialog.askopenfilename( title="Choose a Song", filetypes=(('mp3 Files', '*.mp3'),)) # 提取文件名,自动去掉所有前置路径 song_filename = os.path.basename(song) song_box.insert(END, song_filename)方法2:使用
pathlib模块(Python3.4+推荐)
这是Python更现代的路径处理方式,代码更直观:from pathlib import Path from tkinter import filedialog def add_song(): song = filedialog.askopenfilename( title="Choose a Song", filetypes=(('mp3 Files', '*.mp3'),)) # 转换为Path对象,直接取name属性得到文件名 song_filename = Path(song).name song_box.insert(END, song_filename)
为什么不推荐用replace?因为replace需要指定具体的路径字符串,不仅不通用,还可能因为路径里有重复字符导致错误,而且不同操作系统的路径分隔符(Windows用\,Linux/macOS用/)也会让硬编码的替换逻辑失效,用标准库的路径处理工具能完美解决这些问题。
内容的提问来源于stack exchange,提问作者Krizby
相关产品推荐
相关产品推荐

