怎么办"输入行太长"的错误信息?

Ton*_*zzo 10 python command-line windows-console

我试图使用os.system()来调用另一个接受输入和输出文件的程序.由于文件夹名称较长,我使用的命令约为250个字符.

当我尝试调用命令时,我收到一个错误:The input line is too long.

我猜是有一个255 character limit(它使用C系统调用构建,但我也找不到限制).

我试图改变与目录os.chdir(),以减少文件夹小道长,但是当我尝试使用os.system()"..\folder\filename"它显然不能处理的相对路径名.有没有办法绕过这个限制或让它识别相对路径?

sor*_*rin 18

即使使用它也是个好主意subprocess.Popen(),但这并不能解决问题.

你的问题不是255个字符的限制,这在DOS时间是正确的,后来对于Windows NT/2000增加到2048,并且对于Windows XP +再次增加到8192.

真正的解决办法是要解决一个很老的bug在Windows的API:_popen()和_wpopen() .

如果您在命令行期间使用引号,则必须在quoates中添加整个命令,否则您将收到The input line is too long错误消息.

从Windows XP开始的所有Microsoft操作系统都有8192个字符的限制,现在足以用于任何体面的命令行使用但他们忘记解决这个错误.

要克服他们的错误,只需将您的整个命令包含在双引号中,如果您想了解更多关于_popen()MSDN评论.

小心,因为这些工作:

prog
"prog"
""prog" param"
""prog" "param""
Run Code Online (Sandbox Code Playgroud)

但这些不起作用:

""prog param""
Run Code Online (Sandbox Code Playgroud)

如果您需要一个在需要时添加引号的函数,可以从http://github.com/ssbarnea/tendo/blob/master/tendo/tee.py中选择一个.


DNS*_*DNS 7

您应该使用子进程模块.请参阅这个小文档,了解如何重写os.system调用以使用子进程.