我需要使用我的朋友在shell中开发的函数在Python中编写代码。那可能吗?我可以做点什么吗
output = subprocess.call(' friends_developed_function',shell = True)
答案 0 :(得分:1)
您需要先确定您朋友的功能,然后才能调用它。您不能调用在父进程中定义的函数[注1]。所以你可以执行以下操作:
output = subprocess.check_output(
'source /path/to/function/definition; the_function args if needed',
shell = True)
请注意,我将subprocess.call
更改为subprocess.check_output
,以便调用将返回shell函数的输出,而不是退出代码。
使用函数定义修复脚本文件的路径有点尴尬。您可以使用字符串文字:
直接在调用函数之前定义函数output = subprocess.check_output(
"""my_func() { echo The argument is "$1"; }
my_func the_argument
""",
shell = True)
bash
,否则可能无法为os.system
或subprocess.call(..., shell=True)
工作,因为这些将使用基本shell /bin/sh
,这通常是没有打击。即使你强制使用bash,并且你已经正确地导出了函数定义,它仍然是一个坏主意,因为你的python脚本只有在环境设置正确的情况下才能工作。答案 1 :(得分:0)
有几种方法可以做到这一点,我发布了我熟悉的内容。
with open(r"*file location", 'wb', 0) as file:
subprocess.check_call(*command*, stdout=file)
现在输出位于文本文件位置。我使用check_call来验证命令,所以我假设subprocess.call()只执行命令。