如何从不同的文件类型导入变量

时间:2010-01-07 10:24:45

标签: python

我试图从不同的文件类型中获取变量并将其导入Python脚本。该文件是version.mk,它有一个名为VARIABLE_ID的变量。导入模块不能正常工作,有没有办法从其他文件类型调用变量?

感谢您的帮助

import os

from version import VERSION_ID

def versionid:

    print VERSION_ID

这是不起作用的代码。

版本ID为0.0.2格式。当我运行以下代码时,它表示数字中存在语法错误。

我已经读过distutils有一个版本编号约定。我不确定如何使用,有人听过或知道这是如何工作的吗?

是否有办法在此文件中进行合作,当文件中的注释干扰文件时。 read()只能读取version_id而不是评论,谢谢

VERSION_ID=map(int,re.match("VERSION_ID\s*=\s*(\S+)",open("version.mk").read()).group(1).split("."))

2 个答案:

答案 0 :(得分:1)

如果你确定version.mk是有效的python文件,并且没有任何损害代码,你可以执行它。

>>> exec(open("version.mk"))
>>> print VERSION_ID
1

更新:因为OP添加的VERSION_ID不是有效的蟒蛇号码

version.mk

#version no is here
VERSION_ID=0.0.2

#some more info here
....

-

>>> import re
>>> VERSION_ID=map(int,re.search("VERSION_ID\s*=\s*(\S+)",open("version.mk").read()).group(1).split("."))
>>> VERSION_ID
[0, 0, 2]

答案 1 :(得分:1)

如果您的文件不是Python代码,则无法将其导入,就像它一样。

您需要手动打开文件并解析设置。特别是如果包含该数字的行类似于

VERSION_ID = 0.0.2

因为这永远不会是有效的Python(没有看起来像这样的文字)。

这可能是regular expression有意义的情况,例如r'VERSION_ID\s*=\s*([0-9.]+)可能有效。