在配置fi中使用主Python脚本的变量

2024-10-01 07:15:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python主脚本的中间使用一个配置文件。 在这个文件中,主脚本中已经初始化了一些变量。在

主脚本:

# -*- coding: utf-8 -*-

import imp
import optparse
from time import strftime, strptime
from datetime import date, timedelta

[...]

date_mois = date_de_ref.strftime("%m")
date_annee = date_de_ref.strftime("%Y")
date_moins2j = (date_de_ref - timedelta(days=2)).strftime("%d/%m/%Y")
date_moins7j = (date_de_ref - timedelta(days=7)).strftime("%d/%m/%Y")

imp.load_source("conf_file", "part_1.config")
import conf_file

for task in conf_file.list_tasks:
    print task[1]

print "The end!"

“part_1.config”:

^{pr2}$

如果我这样做,我会得到:

Traceback (most recent call last):
  File "ordo_na.py", line 48, in <module>
    imp.load_source("conf_file", "part_1.config")
  File "part_1.config", line 9, in <module>
    ["B", "BAT003 FIN=" + date_moins2j, ""],
NameError: name 'date_moins2j' is not defined

我试过了:

import ordo_na

list_tasks = [
    ["B", "BAT001", ""],
    ["B", "BAT002 DEBUT=21/13/12", ""],
    ["B", "BAT003 FIN=" + ordo_na.date_moins2j, ""],
]

主脚本似乎以这种方式执行了两次。在

如何在配置文件中使用主脚本中的变量?
如果可能的话,我希望避免import ordo_na行,并尽可能保持配置文件的干净。在

顺便说一下,我使用的是python2.6.6(我不能升级到更新的版本)。在

谢谢!在


Tags: import脚本refconfigdateconf配置文件de
1条回答
网友
1楼 · 发布于 2024-10-01 07:15:58

模块是独立的,并且您无法轻松地从导入模块访问导入模块的变量(我认为您正在尝试这样做)。在

考虑:

部件1.配置

def get_tasks(date_moins2j):

    list_tasks = [
        ["B", "BAT001", ""],
        ["B", "BAT002 DEBUT=21/13/12", ""],
        ["B", "BAT003 FIN=" + date_moins2j, ""],
    ]

    return list_tasks

主脚本

^{pr2}$

或者,您可以将part_1.config重命名为my_config.py,然后简单地使用import

主脚本

import my_config as conf_file

pprint.pprint( conf_file.get_tasks("foo") )

如果您不想显式处理传递参数的问题,您可以始终传递导入模块(主脚本)的全局字典,并访问该字典,那么您的文件将如下所示:

部件1.配置

def get_tasks(g):

    list_tasks = [
        ["B", "BAT001", ""],
        ["B", "BAT002 DEBUT=21/13/12", ""],
        ["B", "BAT003 FIN=" + g['date_moins2j'], ""],
    ]

    return list_tasks

主脚本

import imp

imp.load_source("conf_file", "part_1.config")
import conf_file

date_moins2j = "foo"

pprint( conf_file.get_tasks(globals()) )

相关问题 更多 >