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

Python读取CFG配置后glob无法匹配目标文件问题求助

解决glob读取CFG配置后无法匹配文件的问题

嘿,我一眼就瞅出问题所在了——你读取CFG文件时没处理掉隐藏的换行符和多余引号,导致glob拿到的路径完全不符合要求,自然找不到文件!

咱们拆解下问题根源:

  • 用read()读取cfg文件时,文件末尾的换行符\n会被一并读入,比如config.cfg里的C:/test,实际读出来是C:/test\n
  • filetype.cfg里的内容带双引号,读出来是"**/*.jpg"(甚至可能还带换行),拼接后路径变成C:/test\n"**/*.jpg",这显然不是合法的搜索路径,glob当然匹配不到任何文件

下面是修正后的代码,我还加了更稳妥的路径处理逻辑:

import glob
import os

# 用with语句管理文件,自动关闭更安全靠谱
with open("config.cfg", encoding='cp1252') as loc_file:
    # strip()去掉换行、首尾空格等多余字符,确保路径干净
    location = loc_file.read().strip()

with open("filetype.cfg", encoding='cp1252') as type_file:
    # 先清理空白字符,再去掉首尾的双引号
    filetype = type_file.read().strip().strip('"')

# 用os.path.join适配Windows路径分隔符,避免手动拼接出错
# 兼容filetype的两种写法:不管是**/*.jpg还是*.jpg,都能生成正确的搜索模式
search_pattern = os.path.join(location, "**", filetype.lstrip("**/"))
fileset = glob.glob(search_pattern, recursive=True)

print(f"目标路径:{location}")
print(f"文件类型:{filetype}")
for file in fileset:
    print(file)

为什么这么改?

  1. 清理读取内容:strip()能彻底干掉文件读取时带入的换行符、空格,确保路径是干净的C:/test而非C:/test\n
  2. 移除多余引号:strip('"')把filetype里的双引号去掉,让它变成符合glob语法的**/*.jpg或*.jpg
  3. 安全拼接路径:用os.path.join代替手动加号拼接,它会自动适配Windows的\分隔符,避免跨平台问题(哪怕现在用Windows,好习惯也要保持)
  4. 兼容不同配置写法:不管你的cfg里写的是**/*.jpg还是*.jpg,lstrip("**/")都能处理成合适的后缀,和location/**拼接成正确的搜索模式

你可以先打印下修正后的location和filetype,会发现它们和参考代码里硬编码的内容完全一致,这样glob就能正常匹配文件了!

内容的提问来源于stack exchange,提问作者Charles Manson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:27:54