【问题标题】:Identifying the currently running script识别当前正在运行的脚本
【发布时间】:2019-03-15 23:12:20
【问题描述】:

假设我有一个管理命令行参数的config.py

parser = argparse.ArgumentParser()
parser.add_argument('common_argument')
args = parser.parse_args()
input_common = args. common_argument

这个文件是从我在项目中执行的许多其他脚本中导入的。但是,其中有一些脚本需要额外的参数,例如special_file.py。如何添加这些参数?

备选方案 1

config.py 中,我标识了正在导入它以添加附加参数的脚本。假设有一个像__importing_file__ 这样的变量,那么我可以这样做

if __importing_file__ == 'special_file':
    parser.add_argument('special_argument')

但是,我不知道如何识别当前正在运行的脚本。有可能吗?

备选方案 2

在我的special_file.py 中,我可以简单地添加另一个参数并再次解析,即

from config import *

parser.add_argument('special_argument')
args = parser.parse_args()
input_special = args.special_argument

但是,python 无法识别special_argument

这个问题有解决办法吗?

【问题讨论】:

    标签: python argparse


    【解决方案1】:

    您正在寻找的是__file__。但是,这不要sys.argv[0] 混淆。

    sys.argv[0] 给出模块的入口点,即应用程序的启动位置。 IF 这是一个 django 应用程序 sys.argv[0] 会给出 manage.py__file__ 会返回当前运行的 absolute 路径脚本。

    【讨论】:

    • 我无法确认。如果我将print(__file__) 添加到导入的模块,它会显示正在导入的模块的路径。
    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    相关资源
    最近更新 更多