gpt4 book ai didi

Python:ksh函数的返回输出

转载 作者:行者123 更新时间:2023-11-30 23:49:41 24 4
gpt4 key购买 nike

在 Unix 上,如何将 ksh 函数的输出作为 Python 变量检索?该函数称为 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))

我收到权限被拒绝错误。这是回溯:

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

额外详细信息:

  • Python 2.7
  • Ksh 版本 M-11/16/88i
  • Solaris 10 (SunOS 5.10)

最佳答案

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)

关于Python:ksh函数的返回输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7567377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com