【发布时间】:2016-10-19 10:29:53
【问题描述】:
我想通过 Python 执行 Linux 命令。这适用于终端:
/usr/bin/myprogram --path "/home/myuser"
我试过了:
path = "/home/myuser"
args = ['/usr/bin/myprogram', '--path ' + path]
proc = subprocess.Popen(args)
还有这个:
path = "/home/myuser"
args = ['/usr/bin/myprogram', '--path "' + path + '"']
proc = subprocess.Popen(args)
但myprogram 不接受路径格式。我知道当不作为 shell 执行时路径的行为不同,但我无法让它工作。我也尝试过单引号而不是双引号。一个同样适用于 Windows 的解决方案的奖励积分(显然,具有不同的程序路径)。
编辑:对不起,这是从内存中写出来的,并且使用了反斜杠而不是正斜杠。实际代码确实使用了(正确的)正斜杠。
【问题讨论】:
-
你试过
args = ['\usr\bin\myprogram', '--path', path]吗?我以前成功地使用过这种结构,尽管是在 Windows 上。编辑 - 您可能还需要使用 `\` 转义反斜杠 -
试试
subprocess.Popen('/usr/bin/myprogram --path "/home/myuser"', shell=True, stdout=subprocess.PIPE).stdout.read() -
你为什么不直接使用
['/usr/bin/myprogram', '--path' , path]? -
@asongtoruin 如果我使用正斜杠,您的解决方案可以在 Linux 上运行!如果幸运的话,它也可以在 Windows 上运行而不会转义反斜杠。
-
@tsorn,只需在 linux 和 windows 上使用正斜杠。你不应该在 liunux 上使用反斜杠。
标签: python linux python-2.7