Python中的Unix等效源命令

2024-04-20 13:47:17 发布

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

在Unix中,我们有一个SOURCE命令,可以在shell脚本中加载文本文件,文本文件中的所有参数都可以作为脚本中的变量使用。在python中是否有一个等价的?我需要将一个属性文件从边缘节点加载到.py脚本中,并根据该值在.py脚本中做出决定

Sample job.properties file in edge node is below.
databaseName=employee
hdfspath=/tenancy/ida/data
....

我需要在.py脚本中加载这个job.properties文件,这样就不需要将它们作为命令行参数传递。敬请告知


Tags: 文件py命令脚本source参数属性节点
2条回答

实际上,您可以为此定制import机制。但是,让我提供一个快速的技巧:

def source(filename):
    variables = {}
    with open(filename) as f:
        for line in f:
            try:
                name, value = line.strip().split('=')
            except:
                continue
            variables[name] = value
    return variables

variables = source('job.properties')
print(variables)

函数source迭代所提供文件中的行,并将赋值存储在dict词典variables。对于不包含赋值的行,try/except将跳过它

为了进一步模拟shell寻源的行为,可以添加

globals().update(variables)

如果在模块(非函数)级别工作,这将使databaseNamehdfspath作为Python变量可用

请注意,所有“源”变量都将是str,甚至对于源文件中的my_int=42这样的行也是如此

您可以使用“exec”来实现类似于“source”的功能。这不是一件好事

它看起来像:

with open("variables.py") as fi:
    exec(fi.read())

最简单的选择是对ini文件使用configparser模块。 如果不需要,可以尝试yaml或json之类的模块

相关问题 更多 >