我有一个需要执行外部程序的Python脚本,但由于某种原因失败了。
如果我有以下脚本:
import os;
os.system("C:\\Temp\\a b c\\Notepad.exe");
raw_input();
然后它失败并显示以下错误:
无法将“ C:\ Temp \ a”识别为内部或外部命令,可操作程序或批处理文件。
如果我用引号将程序转义:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe"');
raw_input();
然后就可以了。但是,如果添加一个参数,它将再次停止工作:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe" "C:\\test.txt"');
raw_input();
什么是执行程序并等待其完成的正确方法?我不需要从中读取输出,因为它是一个可视程序,可以完成工作然后退出,但是我需要等待它完成。
还要注意,将程序移动到非间隔路径也不是一种选择。
这也不起作用:
import os;
os.system("'C:\\Temp\\a b c\\Notepad.exe'");
raw_input();
注意交换的单/双引号。
不管有没有记事本的参数,它都会失败并显示错误消息
文件名,目录名称或卷标签语法不正确。
subprocess.call
将避免必须处理各种shell的引用约定的问题。它接受列表,而不是字符串,因此参数更容易定界。即
import subprocess
subprocess.call(['C:\\Temp\\a b c\\Notepad.exe', 'C:\\test.txt'])
问题内容: 在OS X上,我试图执行.exec某些内容,但是当路径包含空格时,它将不起作用。我尝试用引号将路径引起来,转义空格,甚至使用\ u0020。 例如,这有效: 但是,如果有空间,这些都不起作用: 有想法吗? 编辑:转义的反斜杠…仍然没有用。 问题答案: 在Sun的论坛上有关于此问题的摘要…似乎是一个非常普遍的问题,不仅限于OSX。 该主题的最后一篇文章总结了建议的解决方案。本质上,使用带
问题内容: 我正在使用python进行文件操作。 我有一个文件路径为: 当我使用python打开文件时,它说: 但是,该文件存在于驱动器上。 可能是因为窗口包含空格,所以无法正确获取“ SEM 2”。 如何在窗口路径的路径中处理此类空格? 问题答案: 路径中的空格没有问题,因为您没有使用“外壳”来打开文件。这是Windows控制台上的一个会话来证明这一点。你做错了什么
问题内容: 如何执行路径名中包含空格的Java System(shell)命令? 我尝试将引号和反斜杠()放在一起,但这不起作用。 问题答案: 到目前为止,最可靠的方法是使用Runtime.exec(String [] cmdarray) 。 如果使用Runtime.exec(String command) ,则Java仅在空白处分割命令。 使用调用new StringTokenizer(comm
我试图解决hackerrank的一个问题,当我提交我的解决方案时,我得到一个错误,说明“由于超时而终止”。 请检查代码,并建议我如何优化。 语句:您有一个空序列,将向您提供查询。每个查询都是以下三种类型之一: 1 x-将元素x推入堆栈。2-删除堆栈顶部的元素。3-打印堆栈中的最大元素。 输入格式 输入的第一行包含一个整数。接下来的每一行都包含上述查询。(保证每个查询都是有效的。) 输出格式 对于每
我的目标是开发一个单一的骆驼路线来映射这些服务器,接受路径中服务器的名称。类似于这样: 我的(简化且不起作用)Blueprint.xml: 问题是,我不知道如何从路径中移除/center、/north或/south,因此头部被传递给目标服务,而目标服务不知道如何处理它。调用:
我有一个主文件,它使用(从主I do a source)一个属性文件,其中的变量指向路径。 属性文件如下所示: 问题是,我必须使用带空格的路径(我不能改变它)。 我试着用引号避开空白,但到目前为止没有解决方案。 我编辑了路径,单引号的问题是我在路径中使用了另一个变量