背景资料
我有一个程序,我用它来ping服务并将结果打印回窗口。我目前正在尝试通过添加一种“设置”文件添加到此程序中,用户可以编辑该文件来更改a)被ping的主机和b)超时
到目前为止我尝试了什么
file = open("file.txt", "r")
print (file.read())
settings = file.read()
# looking for the value of 'host'
pattern = 'host = "(.*)'
variable = re.findall(pattern, settings)[0]
print(test)
至于file.txt文件中包含的内容:
host = "youtube.com"
pingTimeout = "1"
然而,我的尝试没有成功,因为这提出了以下内容 错误:
IndexError:列表索引超出范围
所以,我的问题是:
有人能指出我正确的方向吗?回顾一下,我问我如何从文件中获取输入(在本例中为host =“youtube.com”并将其保存为python文件中的变量'host')。
答案 0 :(得分:0)
首先,正如Patrick Haugh指出的那样,你不能在同一个文件对象上调用read()
两次。其次,使用正则表达式来解析简单的key = value
格式有点过分。
host, pingTimeout = None,None # Maybe intialize these to a default value
with open("settings.txt", "r") as f:
for line in f:
key,value = line.strip().split(" = ")
if key == 'host':
host = value
if key == 'pingTimeout':
pingTimeout = int(value)
print host, pingTimeout
请注意,预期的输入格式没有上述示例代码的引号。
host = youtube.com
pingTimeout = 1
答案 1 :(得分:0)
我试过这个,这可能会有所帮助:
import re
filename = "<your text file with hostname>"
with open(filename) as f:
lines = f.read().splitlines()
for str in lines:
if re.search('host', str):
host, val = str.split('=')
val = val.replace("\"", "")
break
host = val
print host
f.close()