Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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 如何检查httpd.conf中的配置参数_Python_String_Python 3.x - Fatal编程技术网

Python 如何检查httpd.conf中的配置参数

Python 如何检查httpd.conf中的配置参数,python,string,python-3.x,Python,String,Python 3.x,我必须编写python代码来: 读取文本文件作为输入(由制表符分隔,通常为两列) 检查httpd.conf文件中的参数及其值 例如,我有这样一个文本文件: KeepAlive on Listen 80 TCP On 还有一个普通的httpd.conf文件 我想检查并比较每一行字段,如果配置正确,那么打印keepalive就可以了 我写道: d = [] with open("config.txt") as CFGF: for line in CFGF:

我必须编写python代码来:

  • 读取文本文件作为输入(由制表符分隔,通常为两列)
  • 检查httpd.conf文件中的参数及其值
  • 例如,我有这样一个文本文件:

    KeepAlive  on
    Listen     80
    TCP        On
    
    还有一个普通的
    httpd.conf
    文件

    我想检查并比较每一行字段,如果配置正确,那么打印
    keepalive就可以了

    我写道:

    d = []
    with open("config.txt") as CFGF:
        for line in CFGF:
            key, val = line.split()
            c = key, val
            d.extend(c)
    
    with open("httpd.conf") as f:
        j = 0
        for i in d:
            for line in f:
                ls = line.strip()
                if d[j] in line:
                    if d[j + 1] in line:
                        print(line.rsplit())
            j += 1
    

    最后,我写了一些有用的东西(如下),但还有一件事要做(精确匹配单词并忽略大小写)。有什么帮助吗


    您是否假设“httpd.conf”的内容正确,并希望验证“config.txt”中的数据是否与“httpd.conf”中的数据匹配?或者反过来说,“config.txt”是正确的,并且您正在尝试验证“httpd.conf”?另外,您说大多数时候“config.txt”有两个选项卡分隔的列。某些行是否有3列或更多列?如果是这样,您的程序应该如何处理这些额外字段?这里有一些有用的答案:*第一个答案链接到一个类,该类将Apache配置转换为Python数据结构并允许查询。是,Config.txt是正确的,httpd.conf必须是这样。×评论只能编辑5分钟×评论只能编辑5分钟×评论只能编辑5分钟感谢您的回复。。
    l = []
    with open('config.txt') as cfg:
        for line in cfg:
            l.extend(line.split())
    a, b = zip(*(s.split("~") for s in l))
    for w in range(len(a)):
        with open('httpd.conf') as apache:
            for lines in apache:
                if (a[w]) in lines and not lines.startswith("#") and not lines.__contains__("#"):
                    if (b[w]) in lines:
                        print(lines.rstrip())