You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:05:21