【问题标题】:Calling python script on MAC/Linux from Command line - passing arguments从命令行调用 MAC/Linux 上的 python 脚本 - 传递参数
【发布时间】:2011-03-30 08:31:03
【问题描述】:

考虑这个设置和文件夹结构:

c:\foo
      \bin\foo.bat
      \lib\foo.py

我已将 foo.bat 路径添加到我的环境 PATH 中,因此我可以从传入一些参数的任何地方调用它:

c:/>foo.bat -v 

foo.bat 包含以下代码:

@ECHO OFF
"c:\foo\lib\foo.py" %1 %2 %3 %4 %5 %6 %7 %8 %9

这在 Windows 中运行良好。

现在我希望能够在 Mac 或 Linux 上做同样的事情。

如何创建这个可执行文件,它会调用脚本 lib\foo.py,并传入一些参数?

谢谢

[解决方案]

谢谢大家,您的回答帮助我最终得到了这个按预期工作的脚本:

在\foo\bin\foo 文件

#!/usr/bin/env bash
python /usr/local/foo/lib/foo.py $*

【问题讨论】:

    标签: python linux macos command-line batch-file


    【解决方案1】:

    你可以直接在mac/linux上调用python脚本,只要确保把你的python解释器放在第一行,示例文件foo:

    #!/usr/bin/python 
    if __name__ == "__main__":
        print 'bar'
    

    要运行文件,使用./foo直接从当前目录调用它

    如果你想从任何地方访问,你可以把它放在/usr/local/bin中,例如,只要确保文件是可执行的(chmod +x foo)。

    【讨论】:

    • 感谢 deif。唯一的问题是我不希望用户直接调用脚本,因为我将所有可执行文件保存在 bin 中,而脚本位于 libs 中,其中它与该文件夹中的其他库/脚本有相对引用。
    【解决方案2】:

    您没有明确说明您选择的 shell 是什么,但假设它是 GNU bash:

    #!/usr/bin/env bash
    /path/to/lib/foo.py $*

    请注意,您的 shell 脚本和 foo.py 都需要将执行位设置为以这种方式运行(这只是一个

    chmod +x /path/to/your/script /path/to/lib/foo.py
    离开)。

    【讨论】:

    • 感谢伊曼纽尔。这真的很有帮助,因为我不确定如何传递这些参数。
    猜你喜欢
    • 1970-01-01
    • 2016-10-26
    • 2013-10-11
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 2020-05-18
    相关资源
    最近更新 更多