在Unix上,如何以Python变量的形式检索ksh函数的输出?函数名为sset,并在我的".kshrc“中定义。
根据评论建议,我尝试使用subparser模块。我想出的是:
import shlex
import subprocess
command_line = "/bin/ksh -c \". /Home/user/.khsrc && sset \""
s = shlex.shlex(command_line)
subprocess.call(list(s))我得到一个Permission denied错误。这是回溯:
Traceback (most recent call last):
File "./pymss_os.py", line 9, in <module>
subprocess.call(list(s))
File "/Soft/summit/tools/Python-2.7.2/Lib/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/Soft/summit/tools/Python-2.7.2/Lib/subprocess.py", line 679, in __init__
errread, errwrite)
File "/Soft/summit/tools/Python-2.7.2/Lib/subprocess.py", line 1228, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied额外细节:
M-11/16/88i
发布于 2011-09-27 15:05:31
shlex没有做您想做的事情:
>>> list(shlex.shlex("/bin/ksh -c \". /Home/user/.khsrc\""))
['/', 'bin', '/', 'ksh', '-', 'c', '". /Home/user/.khsrc"']您正在尝试执行根目录,这是不允许的,因为它是一个目录,而不是一个可执行文件。
相反,只需给subprocess.call一个程序名称和所有参数的列表:
import subprocess
command_line = ["/bin/ksh", "-c", "/Home/user/.khsrc"]
subprocess.call(command_line)https://stackoverflow.com/questions/7567377
复制相似问题