Python中如何将glob搜索目录设为用户输入变量?空列表问题
解决glob.glob无法匹配用户输入目录下txt文件的问题
嘿,这个问题我太熟悉了!你的代码问题出在路径拼接时缺少了路径分隔符——当用户输入的目录没有以/(Linux/macOS)或\(Windows)结尾时,直接拼接*.txt会生成类似myfolder*.txt的错误路径,glob自然找不到任何文件。
最稳妥的解决方案:用os.path.join拼接路径
os.path.join是Python标准库中专门处理路径拼接的工具,它会自动根据操作系统添加正确的路径分隔符,不管用户输入的目录有没有结尾的分隔符都能正常工作:
import glob import os input_directory = input("Please specify input folder: ") # 用os.path.join安全拼接目录和文件名模式 txt_files = glob.glob(os.path.join(input_directory, "*.txt")) print(txt_files)
更现代的方式:使用pathlib(Python 3.4+)
如果你用的是较新的Python版本,推荐使用pathlib模块,它采用面向对象的方式处理路径,代码更直观易读:
from pathlib import Path input_directory = input("Please specify input folder: ") # Path对象的glob方法直接返回匹配的文件路径对象 txt_files = list(Path(input_directory).glob("*.txt")) # 如果需要字符串格式的路径,可以转换一下: # txt_files = [str(file_path) for file_path in Path(input_directory).glob("*.txt")] print(txt_files)
为什么你的原代码不行?
举个例子:如果用户输入的目录是/home/user/docs,你的代码会拼接成/home/user/docs*.txt——这个路径实际上是在/home/user目录下找名为docs*.txt的文件,而不是/home/user/docs目录下的*.txt文件,所以返回空列表。
内容的提问来源于stack exchange,提问作者J.B.
相关产品推荐
相关产品推荐

