这是我的代码摘要:
# import whatever
def createFolder():
#someCode
var1=Gdrive.createFolder(name)
return var1
def main():
#someCode
var2=createFolder()
return var2
if __name__ == "__main__":
print main()
我设法将值返回给 bash 变量的一种方法是打印从 main() 返回的内容。另一种方法是在脚本的任何地方打印变量。
有没有办法以更 pythonic 的方式返回它?
脚本是这样调用的:
folder=$(python create_folder.py "string_as_arg")
最佳答案
一种更 pythonic 的方法是避免 bash 并用 python 编写所有内容。
您不能期望 bash
有一种 Python 式的方式从另一个进程获取值 - 它就是 bash 方式。
bash 和 python 运行在不同的进程中,进程间通信 (IPC) 必须通过内核。有许多 IPC 机制,但 bash 并不支持所有机制(例如共享内存)。这里的最小公分母是 bash,所以你必须使用 bash 支持的,而不是 python 拥有的(python 拥有一切)。
没有共享内存,写入另一个进程的变量不是一件简单的事情——更不用说另一种语言了。调试器会这样做,但它们是专门为宿主语言编写的。
您从 bash 使用的机制是捕获子进程的标准输出,因此 python 必须 print
。这在幕后使用了一个匿名管道。您可以改用命名管道(也称为 fifo),python 会将其作为普通文件打开并向其写入
。但这不会给你带来太多好处。
关于python - 如何从 Python 脚本返回一个值作为 Bash 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20031505/