我试图学习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脚本中吗?
答案 0 :(得分:1)
假设您的文件名为file.txt
,您可以将所有这些变量添加到global
scope
,其中包含:
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
只是string
的{{1}}:
domains
要将其转换为'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
答案 1 :(得分:-2)
如果可以,请使用configparser(http://docs.python.org/3/library/configparser.html)。但这会迫使您更改配置文件的结构。
如果您只需要域值:
<header>
<div id="bgimage"></div>
<nav>
<a href="home.html" title="Click to go to the homepage.">Home</a>
<span class="divider">-</span>
<a href="cakes.html" title="Click to see types of cakes.">Types of Cake</a>
</nav>
<h1>Cakes</h1>
</header>
body header {
width:100%;
text-align:center;
box-shadow:0 4px 4px 4px rgba(0,0,0,0.2);
z-index:4;
position:relative;
background-color:linear-gradient(CornFlowerBlue,RoyalBlue);
}
body header div#bgimage {
background-attachment:fixed;
background-position:center;
background-size:cover;
background-image:url(hydrangea-cakes-2.jpg);
filter:blur(1px);
position:absolute;
width:100%;
height:100%;
}
您还可以创建字典:
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(',')]