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

Python传入配置文件读取的路径打开文件报OSError22错误

问题根因

触发OSError: [Errno 22] Invalid argument的核心原因是配置文件中的路径值额外包裹了双引号。
configparser读取配置项时,不会自动将值外层的双引号识别为字符串边界符号,会直接把这对双引号作为内容拼接到最终读取到的路径字符串里。从报错信息可以看到,传入open()函数的路径首尾多了一层不属于合法路径组成的双引号:'"C:\\Users\XXXX\Documents\Documents\PythonRun\Scripts\AATEST\do\products.txt"',自然会被系统判定为无效路径。
你后续尝试的path = r'{}'.format(configParser.get('APP', 'path'))写法,只是对已经带多余引号的字符串做了原始字符串转换,根本没有移除首尾的非法引号字符,所以报错完全没有变化。

修复方案

两种方案选择任意一种即可:

  • 方案1:直接修改配置文件,移除路径值外层的双引号
    将config.txt中的path配置调整为如下形式,不要给路径值加引号:
    [APP]
    path = C:\Users\XXXX\Documents\Documents\PythonRun\Scripts\AATEST\do\products.txt
    
    修改完成后原有读取代码不需要做任何调整,即可正常读取文件。
  • 方案2:如果不方便修改配置文件,就在代码读取配置项后手动清理多余字符
    读取path的逻辑增加一步首尾字符清理,移除多余的引号和首尾空白:
    import configparser
    
    configParser = configparser.RawConfigParser()   
    configFilePath = r'\\NetworkPath\Subfolder\Users\Me\New folder\config.txt'
    configParser.read(configFilePath)
    path = configParser.get('APP', 'path').strip().strip('"')
    

补充说明:原始字符串前缀r''只适用于你在Python代码里直接硬编码写Windows路径的场景,用来避免反斜杠被识别为转义符。从配置文件读取到的路径本身已经正确保留了反斜杠字符,额外套一层r''做转换没有实际作用,也解决不了引号导致的路径非法问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:48:25