Python错误:OSError:[Errno 22] 参数无效。

4
我正在使用一个自动化框架,在多次迭代后出现以下随机错误。有人能帮我理解这可能对应什么吗!!
_os.environ['PATH'] = r'C:\DAL;' + _os.environ['PATH']
  File "c:\Python26\lib\os.py", line 420, in __setitem__
    putenv(key, item)
OSError: [Errno 22] Invalid argument

失败的函数调用:

函数名称:

    plugin_xml_file_name = plugin_name
else:
    plugin_xml_file_name = plugin_path + "\\" + plugin_name
#

_os.environ['PATH'] = r'C:\Intel\DAL;' + _os.environ['PATH']
_os.environ['PATH'] = r'C:\intel\dal;' + _os.environ['PATH']
_os.environ['PATH'] = _lakemore_path + ';' + _os.environ['PATH']
_os.environ['PATH'] = plugin_path + ';' + _os.environ['PATH']

1
到这个阶段,os.environ['PATH']有多长? - Martijn Pieters
我不确定。有没有什么方法可以转储出那些信息?或者在超过某个阈值时清除它? - user2510612
剩下的回溯信息是什么?无法确定在这里扩展路径的是什么。 - Martijn Pieters
它追溯到这个函数...有没有检查器可以在这里包含,以确保它不超过限制。 - user2510612
那个函数被调用的频率有多高? - Martijn Pieters
每次运行时...在我调用它大约80次后,它就会失败... - user2510612
3个回答

4

您创建的路径太长,操作系统不再接受更长的环境变量。

仅扩展路径一次。检查您要添加的路径是否存在:

path = _os.environ['PATH'].split(_os.pathsep)
for extra in (r'C:\Intel\DAL', r'C:\intel\dal', _lakemore_path, plugin_path):
    if extra not in path:
        _os.environ['PATH'] = _os.pathsep.join(extra, _os.environ['PATH'])

如果元素已经存在,则此代码仅添加新元素。


1
在路径的最后一个"/"后再添加一个"/",例如:open('C:\Python34\book.csv') 改为 open('C:\Python34\\\book.csv')


0
避免在您的目录路径中包含特殊字符,如\a、\b、\t、\n、\r。相反,只要必要时使用双斜杠。像\a、\b、\t、\n、\r。
例如,文件路径:E:\android\new_dir\raw_data\books\Harry.csv应该写成E:\\android\\new_dir\\raw_data\\books\Harry.csv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接