首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:返回ksh函数的输出

Python:返回ksh函数的输出
EN

Stack Overflow用户
提问于 2011-09-27 10:04:28
回答 1查看 1.2K关注 0票数 1

在Unix上,如何以Python变量的形式检索ksh函数的输出?函数名为sset,并在我的".kshrc“中定义。

根据评论建议,我尝试使用subparser模块。我想出的是:

代码语言:javascript
复制
import shlex
import subprocess

command_line = "/bin/ksh -c \". /Home/user/.khsrc && sset \""
s = shlex.shlex(command_line)

subprocess.call(list(s))

我得到一个Permission denied错误。这是回溯:

代码语言:javascript
复制
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

  • Solaris 10 (SunOS 5.10)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-27 15:05:31

shlex没有做您想做的事情:

代码语言:javascript
复制
>>> list(shlex.shlex("/bin/ksh -c \". /Home/user/.khsrc\""))
['/', 'bin', '/', 'ksh', '-', 'c', '". /Home/user/.khsrc"']

您正在尝试执行根目录,这是不允许的,因为它是一个目录,而不是一个可执行文件。

相反,只需给subprocess.call一个程序名称和所有参数的列表:

代码语言:javascript
复制
import subprocess

command_line = ["/bin/ksh", "-c", "/Home/user/.khsrc"]
subprocess.call(command_line)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7567377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档