我正在尝试使用 os.system() 调用另一个接受输入和输出文件的程序。由于文件夹名称较长,我使用的命令约为 250 个字符。
当我尝试调用该命令时,出现错误:输入行太长
。
我猜有 255 个字符的限制
(它是使用 C 系统调用构建的,但我也找不到限制)。
我尝试使用 os.chdir()
更改目录以减少文件夹路径长度,但是当我尝试使用 os.system()
和 时” ..\folder\filename"
它显然无法处理相对路径名。有什么方法可以绕过这个限制或让它识别相对路径吗?
最佳答案
即使使用 subprocess.Popen()
是个好主意,但这并不能解决问题。
您的问题不是 255 个字符的限制,在 DOS 时代是这样,后来在 Windows NT/2000 上增加到 2048 个,在 Windows XP+ 上又增加到 8192 个。
真正的解决方案是解决 Windows API 中一个非常古老的错误:_popen() and _wpopen() .
如果您曾经在命令行中使用引号,则必须将整个命令添加到引号中,否则您将收到The input line is too long
错误消息。
从 Windows XP 开始的所有 Microsoft 操作系统都有 8192 个字符的限制,这对于任何正常的命令行使用来说已经足够了,但他们忘记了解决这个错误。
要克服他们的错误,只需将整个命令用双引号括起来,如果您想了解更多真实的 MSDN comment on _popen() .
小心,因为这些有效:
prog
"prog"
""prog" param"
""prog" "param""
但是这些都行不通:
""prog param""
如果您需要一个在需要时添加引号的函数,您可以从 http://github.com/ssbarnea/tendo/blob/master/tendo/tee.py 中获取
关于python - 如何处理 "The input line is too long"错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/682799/