当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《怎么办"输入行太长"的错误信息?》经验,为你挑选了2个好方法。

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

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

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

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



1> sorin..:

即使使用它也是个好主意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""

但这些不起作用:

""prog param""

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



2> DNS..:

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

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有