<tfoot id='BWXzH'></tfoot>

  1. <small id='BWXzH'></small><noframes id='BWXzH'>

      <bdo id='BWXzH'></bdo><ul id='BWXzH'></ul>

      <i id='BWXzH'><tr id='BWXzH'><dt id='BWXzH'><q id='BWXzH'><span id='BWXzH'><b id='BWXzH'><form id='BWXzH'><ins id='BWXzH'></ins><ul id='BWXzH'></ul><sub id='BWXzH'></sub></form><legend id='BWXzH'></legend><bdo id='BWXzH'><pre id='BWXzH'><center id='BWXzH'></center></pre></bdo></b><th id='BWXzH'></th></span></q></dt></tr></i><div id='BWXzH'><tfoot id='BWXzH'></tfoot><dl id='BWXzH'><fieldset id='BWXzH'></fieldset></dl></div>
      <legend id='BWXzH'><style id='BWXzH'><dir id='BWXzH'><q id='BWXzH'></q></dir></style></legend>

      将 Python 脚本的返回值存储在 bash 脚本中

      store return value of a Python script in a bash script(将 Python 脚本的返回值存储在 bash 脚本中)
      <tfoot id='owDKX'></tfoot>
      • <small id='owDKX'></small><noframes id='owDKX'>

            <tbody id='owDKX'></tbody>
          • <legend id='owDKX'><style id='owDKX'><dir id='owDKX'><q id='owDKX'></q></dir></style></legend>
            <i id='owDKX'><tr id='owDKX'><dt id='owDKX'><q id='owDKX'><span id='owDKX'><b id='owDKX'><form id='owDKX'><ins id='owDKX'></ins><ul id='owDKX'></ul><sub id='owDKX'></sub></form><legend id='owDKX'></legend><bdo id='owDKX'><pre id='owDKX'><center id='owDKX'></center></pre></bdo></b><th id='owDKX'></th></span></q></dt></tr></i><div id='owDKX'><tfoot id='owDKX'></tfoot><dl id='owDKX'><fieldset id='owDKX'></fieldset></dl></div>

                <bdo id='owDKX'></bdo><ul id='owDKX'></ul>
                本文介绍了将 Python 脚本的返回值存储在 bash 脚本中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我想从 bash 脚本执行 python 脚本,并且我想将 python 脚本的输出存储在一个变量中.

                I want to execute a python script from a bash script, and I want to store the output of the python script in a variable.

                在我的 python 脚本中,我将一些内容打印到屏幕上,最后我返回一个字符串:

                In my python script, I print some stuff to screen and at the end I return a string with:

                sys.exit(myString) 
                

                在我的 bash 脚本中,我执行了以下操作:

                In my bash script, I did the following:

                outputString=`python myPythonScript arg1 arg2 arg3 `
                

                但是当我使用 echo $outputString 检查 outputString 的值时,我得到了 Python 脚本打印到屏幕上的所有内容,但 不是 返回值myString

                But then when I check the value of outputString with echo $outputString I get everything that the Python script had printed to screen, but not the return value myString!

                我应该怎么做?

                我需要该字符串,因为它告诉我 Python 脚本创建的文件所在的位置.我想做类似的事情:

                I need the string because that tells me where a file created by the Python script is located. I want to do something like:

                fileLocation=`python myPythonScript1 arg1 arg2 arg1`
                python myPythonScript2 $fileLocation
                

                推荐答案

                sys.exit(myString) 并不意味着返回这个字符串".如果您将字符串传递给 sys.exit, sys.exit 会将该字符串视为错误消息,并将该字符串写入 stderr.与整个程序的返回值最接近的概念是它的退出状态,它必须是一个整数.

                sys.exit(myString) doesn't mean "return this string". If you pass a string to sys.exit, sys.exit will consider that string to be an error message, and it will write that string to stderr. The closest concept to a return value for an entire program is its exit status, which must be an integer.

                如果您想捕获写入 stderr 的输出,您可以执行类似的操作

                If you want to capture output written to stderr, you can do something like

                python yourscript 2> return_file
                

                你可以在你的 bash 脚本中做类似的事情

                You could do something like that in your bash script

                output=$((your command here) 2> &1)
                

                但不能保证只捕获传递给 sys.exit 的值.写入 stderr 的任何其他内容也将被捕获,其中可能包括日志输出或堆栈跟踪.

                This is not guaranteed to capture only the value passed to sys.exit, though. Anything else written to stderr will also be captured, which might include logging output or stack traces.

                示例:

                test.py

                print "something"
                exit('ohoh') 
                

                t.sh

                va=$(python test.py 2>&1)                                                                                                                    
                mkdir $va
                

                bash t.sh

                编辑

                不知道为什么,但在这种情况下,我会编写一个主脚本和两个其他脚本...混合 python 和 bash 是没有意义的,除非你真的需要.

                Not sure why but in that case, I would write a main script and two other scripts... Mixing python and bash is pointless unless you really need to.

                import script1
                import script2
                
                if __name__ == '__main__':
                    filename = script1.run(sys.args)
                    script2.run(filename)
                

                这篇关于将 Python 脚本的返回值存储在 bash 脚本中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                Initialize Multiple Numpy Arrays (Multiple Assignment) - Like MATLAB deal()(初始化多个 Numpy 数组(多重赋值) - 像 MATLAB deal())
                How to extend Python class init(如何扩展 Python 类初始化)
                What#39;s the difference between dict() and {}?(dict() 和 {} 有什么区别?)
                What is a wrapper_descriptor, and why is Foo.__init__() one in this case?(什么是 wrapper_descriptor,为什么 Foo.__init__() 在这种情况下是其中之一?)
                Initialize list with same bool value(使用相同的布尔值初始化列表)
                setattr with kwargs, pythonic or not?(setattr 与 kwargs,pythonic 与否?)

                <small id='209zl'></small><noframes id='209zl'>

                      <tfoot id='209zl'></tfoot><legend id='209zl'><style id='209zl'><dir id='209zl'><q id='209zl'></q></dir></style></legend>
                    • <i id='209zl'><tr id='209zl'><dt id='209zl'><q id='209zl'><span id='209zl'><b id='209zl'><form id='209zl'><ins id='209zl'></ins><ul id='209zl'></ul><sub id='209zl'></sub></form><legend id='209zl'></legend><bdo id='209zl'><pre id='209zl'><center id='209zl'></center></pre></bdo></b><th id='209zl'></th></span></q></dt></tr></i><div id='209zl'><tfoot id='209zl'></tfoot><dl id='209zl'><fieldset id='209zl'></fieldset></dl></div>

                        <bdo id='209zl'></bdo><ul id='209zl'></ul>

                            <tbody id='209zl'></tbody>