【问题标题】:Calling a python function with options from shell script使用 shell 脚本中的选项调用 python 函数
【发布时间】:2015-06-04 14:56:09
【问题描述】:

我有一个 python 脚本,它从命令行获取各种选项

例如

-使用 gui 运行

python myscript.py -gui

-无需用户提示即可运行

python myscript.py -aut

-使用从 input.py 获取的输入数据运行

python myscript.py input.py

-以及上述的组合,例如自动运行,从 input.py 获取输入

python myscript.py -aut input.py

我希望能够从我的 linux 机器上的任何地方调用它。我怎样才能做到这一点?我曾尝试在我的 .bashrc 文件中使用别名,但使用此方法无法接受任何输入选项。我也试过了

export PATH=$PATH:/path/to/folder/above_myscript/

但这仅在我输入 myscript 而不是 python myscript 时识别命令。只输入 myscript 显然无法运行 python 脚本。

我也尝试过编写一个可以调用的 shell 脚本。

#!/bin/bash
#file: myscript.sh

python '/path/to/folder/above_myscript/myscript.py'

但是,我也无法将任何选项传递给它。这个问题的最佳解决方案是什么?

【问题讨论】:

    标签: python linux bash shell


    【解决方案1】:

    如果您将#!/usr/bin/env python 添加到您的myscript.py 文件的顶部并在其上运行chmod +x myscript.py,您应该能够运行myscript.py 而无需在其前面放置python .这应该可以让您使用以前的 PATH 更改方法。

    【讨论】:

    • 这几乎对我有用。但是,在 myscript.py 中,我有一个调用myscript_gui.py 的子进程命令,然后调用一些图像文件。 myscript.py 找不到 myscript_gui.py 除非我明确包含此文件的路径并且 myscript_gui.py 也找不到图像文件。 python有没有办法使用我的linux路径上已经存在的东西来运行gui?
    • @218 stackoverflow.com/a/246128/3447365 这个答案向您展示了如何获取您正在调用的脚本的目录。如果 myscript_gui.py 脚本位于同一目录中,我假设它是?然后您可以将目录路径添加到您调用它的位置,它应该可以工作:)
    • 恐怕我不明白该怎么做 - 该链接是针对 python 无法读取的 bash 脚本的,所以 DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 只返回 SyntaxError: invalid syntax
    • @218 抱歉,我一定是大发雷霆,当时也在回答一个 bash 问题 :) 在 python 中,您可以使用 os.path.dirname(os.path.realpath(__file__)) 获取脚本所在的目录。然后您可以将此附加到您的 myscript_gui.py 脚本的开头以获取它的位置:)
    【解决方案2】:

    试试这个:

    python /path/to/folder/above_myscript/myscript.py
    

    或者这个:

    cd /path/to/folder/above_myscript && python myscript.py
    

    在你的 shell 脚本上。

    【讨论】:

      猜你喜欢
      • 2012-01-23
      • 1970-01-01
      • 2016-03-13
      • 2015-11-18
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      相关资源
      最近更新 更多