Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python获取file.txt的参数_Python_Function_File_Parameters_Module - Fatal编程技术网

使用python获取file.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

我正在尝试获取.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 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
。或者甚至是一个合适的数据库。请展示你已经尝试过的。您可以逐行读取文件,然后使用splitIn
line.split(“=”[-1]
why-1?它不应该是1吗?没有什么区别,因为
[-1]
只取最后一个元素,因为数组只有两个元素
[1]
[-1]
都可以work@pasch013该死的,我忘了在python中可以使用负索引访问数组元素。我的错。