如何从外部文件读取变量?

2024-09-29 02:16:55 发布

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

我正在尝试学习Python,在这一点上,我非常困惑。我想做的是:

我有一个Python脚本,需要从外部文件调用变量。外部数据文件不能与Python脚本驻留在同一文件夹中。数据文件的位置当前是/Users/discoveryone/Documents(这将在Macintosh上运行)。以下是数据文件的内容:

domains='apple.com', 'google.com', 'yahoo.com', 'aol.com', 'disney.com', 'mydomain.com', 'hotmail.com'
email='noone1@nowhere.com'
smtpserver='smtp.mydomain.com'
smtpport='465'
smtpto='noone1@nowhere.com'
smtpfrom='noone2@nowhere.com'

我需要调用domains字段中的所有值,然后分别通过while循环对它们进行处理,如果需要,还可以使用其他数据。你知道吗

有人能帮我把外部数据文件调用到Python脚本中吗?你知道吗


Tags: 文件脚本文件夹com内容apple数据文件users
2条回答

如果可以,请使用configparser(http://docs.python.org/3/library/configparser.html)。但这将迫使您更改配置文件的结构。你知道吗

如果只需要域值:

with open('/Users/discoveryone/Documents/file') as my_file:
    d_line = my_file[0]
    d_values = [v.replace("'", "") for v in d_line.split('=')[1].split(',')]

您还可以创建字典:

config = {}
with open('/Users/discoveryone/Documents/file') as my_file:
    for line in my_file:
        k, v = line.split('=')
        v = v.replace('"', "")  # Remove uggly single quotes.
        if k == 'domains':   # If its the domain values, create a list out of them
            v = v.split(',')
        config[k] = v

假设您的文件名为file.txt,您可以使用以下命令将所有这些变量添加到globalscope

with open("/Users/discoveryone/Documents/file.txt") as f:
    for l in f:
        var, val = l.split("=")
        globals()[var] = val.strip().replace("'", "")

例如,您可以访问email,它的值为:

'noone1@nowhere.com'

唯一的问题是domains只是domainsstring

'apple.com, google.com, yahoo.com, aol.com, disney.com, mydomain.com, hotmail.com'

要将其转换为domains列表,只需添加line

domains = [d.strip() for d in domains.split(",")]

它将domains修改为:

['apple.com', 'google.com', 'yahoo.com', 'aol.com', 'disney.com', 'mydomain.com', 'hotmail.com']

相关问题 更多 >