在我的Python脚本中,我试图执行下一段代码:
import subprocess
subprocecss.call("xrdb -load ~/.XDefaults")但是它会出现错误:“没有这样的文件或目录”,尽管当我将相同的代码粘贴到终端时它可以工作。我也尝试过os.system(.)对于导入操作系统,我尝试使用"xrdb -merge ~/ ..XDefaults“,尝试从命令中删除~/,甚至尝试更改”to‘,没有办法。我做错什么了?
发布于 2014-12-28 11:40:59
您需要使用shell=True或添加包含完整路径的文件:
subprocecss.call("xrdb -load ~/.XDefaults",shell=True)来自python wiki:
在使用shell=True的Unix上,shell默认为/bin/sh。如果args是字符串,则该字符串指定要通过shell执行的命令。 在使用shell=True的Windows上,COMSPEC环境变量指定默认的shell。在Windows上唯一需要指定shell=True的时候,您希望执行的命令被内置到shell中(例如dir或copy)。
发布于 2014-12-28 11:43:57
注意,由于subprocess.call默认不会继承您的环境,因此没有定义~的值,所以您要么需要传递shell=True标志(可能是危险的),要么通过键入它或使用os.path.expanduser('~/.XDefaults')获取它(如falstru所建议的那样)给出~/.XDefaults的绝对路径。
https://stackoverflow.com/questions/27676039
复制相似问题