在我的Python脚本中,我试图执行下一个代码:
import subprocess
subprocecss.call("xrdb -load ~/.XDefaults")
但它有错误:"没有这样的文件或目录",虽然它在我将相同的代码粘贴到终端时有效。我还尝试使用导入操作系统os.system(...),我尝试用#34; xrdb -merge~ / .XDefaults",我试图删除〜/ from命令,我甚至试图改变&# 34;"到了'',没办法。我做错了什么?
答案 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所建议的那样)。