使用python获取file.txt的参数
我正在尝试获取.txt的参数,如下所示:使用python获取file.txt的参数,python,function,file,parameters,module,Python,Function,File,Parameters,Module,我正在尝试获取.txt的参数,如下所示: a=10 b=15 c=20 如何实现一个名为get()的函数,该函数从名为parameters.txt的文件中获取参数b并返回15 这是为了构建一个模块,该模块的工作方式类似于获取参数 为了简化和解释信息:.txt conatains参数带有和int值。函数的作用是:获取与参数关联的整数值 def get(par): with open("parameters.txt",'r') as file: return next(e
a=10
b=15
c=20
如何实现一个名为get()的函数,该函数从名为parameters.txt的文件中获取参数b并返回15
这是为了构建一个模块,该模块的工作方式类似于获取参数
为了简化和解释信息:.txt conatains参数带有和int值。函数的作用是:获取与参数关联的整数值
def get(par):
with open("parameters.txt",'r') as file:
return next(e for e in file.readlines() if par in e).split("=")[1]
试试这个像这样的东西会有用的:
def get(param):
with open(filename, "r") as infile: #Read file
for line in infile: #Iterate over each line
if line.startswith(param): #Check if line starts with input param
return line.split("=")[1] #Return Value
print(get("b"))
def get(filename,variable):
with open(filename) as f:
for line in f.readlines():
if line[:len(variable)] == variable:
return line.split("=")[-1]
return None
print(get("test.txt","b"))
既然您说要“构建一个像参数获取器一样工作的模块”,那么您应该将整个文件解析到一个内部字典中:
class Config(dict):
def __init__(self, file_name):
with open(file_name) as f:
for line in f:
key, value = line.strip().split("=")
self[key] = value
用法示例:
c = Config("test.txt")
print(c)
# {'a': '10', 'b': '15', 'c': '20'}
print(c['b'])
# 15
如果您的所有值都是数字,您可能希望修改它以执行self[key]=float(value)
或类似操作。否则,您可能需要定义一个try\u parse\u numeric
函数:
def try_parse_numeric(s):
try:
return int(s)
except ValueError:
pass
try:
return float(s)
except ValueError:
pass
return s
class Config(dict):
def __init__(self, file_name, value_parser=try_parse_numeric):
self.value_parser = value_parser
with open(file_name) as f:
for line in f:
key, value = line.strip().split("=")
self[key] = self.value_parser(value)
如果它变得更复杂,您可能希望使用它,而不是自己滚动。欢迎使用它。您的问题不清楚,例如,文件的
参数是什么?请考虑使用现有的数据序列化模块,而不是编写自己的文件格式。例如,pickle
或json
。或者甚至是一个合适的数据库。请展示你已经尝试过的。您可以逐行读取文件,然后使用splitInline.split(“=”[-1]
why-1?它不应该是1吗?没有什么区别,因为[-1]
只取最后一个元素,因为数组只有两个元素[1]
和[-1]
都可以work@pasch013该死的,我忘了在python中可以使用负索引访问数组元素。我的错。