glob返回空列表但调试模式正常的问题求助
问题分析与解决
核心原因:工作目录不匹配
直接运行脚本时,Python的当前工作目录可能不是脚本所在的D:\python,而调试模式会默认以脚本所在目录作为工作目录,这就是两种运行结果存在差异的关键。
验证方法
在脚本中添加以下代码,确认当前工作目录:
import os print(os.getcwd())
如果输出结果不是D:\python,就可以确定是工作目录的问题。
解决办法
有三种可行方案:
- 手动切换工作目录后运行脚本
打开命令行,先执行cd D:\python,再运行脚本文件。 - 脚本内自动切换到自身目录
import os import glob # 获取脚本所在的绝对目录 script_path = os.path.abspath(__file__) script_dir = os.path.dirname(script_path) # 切换工作目录 os.chdir(script_dir) # 执行文件查找 pdf_files = glob.glob("*pdf") print(pdf_files) - 直接使用绝对路径模式查找
无需切换目录,直接拼接脚本目录和文件名模式:import os import glob script_dir = os.path.dirname(os.path.abspath(__file__)) pdf_files = glob.glob(os.path.join(script_dir, "*pdf")) print(pdf_files)
库冲突排查(可选)
如果确认工作目录没问题,再排查库冲突:
- 新建一个空白脚本,只导入
glob并执行glob.glob("*pdf"),观察是否正常返回结果。 - 如果空白脚本运行正常,说明原脚本中其他导入的库可能修改了工作目录或影响了
glob的行为,可逐步注释原脚本中的其他代码,定位冲突的库或代码段。
内容的提问来源于stack exchange,提问作者Cuteo-P
相关产品推荐
相关产品推荐

