如何在Python脚本中执行命令?

时间:2014-12-28 11:38:03

标签: python subprocess

在我的Python脚本中,我试图执行下一个代码:

import subprocess
subprocecss.call("xrdb -load ~/.XDefaults")

但它有错误:"没有这样的文件或目录",虽然它在我将相同的代码粘贴到终端时有效。我还尝试使用导入操作系统os.system(...),我尝试用#34; xrdb -merge~ / .XDefaults",我试图删除〜/ from命令,我甚至试图改变&# 34;"到了'',没办法。我做错了什么?

2 个答案:

答案 0 :(得分:4)

您需要使用shell=True或使用完整路径添加文件:

subprocecss.call("xrdb -load ~/.XDefaults",shell=True)

来自python wiki

  

在Unix上,shell = True,shell默认为/ bin / sh。如果args是一个字符串,则该字符串指定要通过shell执行的命令

     

在具有shell = True的Windows上,COMSPEC环境变量指定默认shell。您需要在Windows上指定shell = True的唯一时间是您希望执行的命令内置到shell中(例如dir或copy)。

答案 1 :(得分:1)

请注意,由于默认情况下subprocess.call未继承您的环境,因此未定义〜的值,因此您需要传递shell=True标志,(有潜在危险),或者通过键入~/.XDefaults或使用os.path.expanduser('~/.XDefaults')来获取{{1}}的绝对路径(如falstru所建议的那样)。