Python如何修复parse from ini文件的正确值,而不是parse value from values字段

2024-09-30 01:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

解析ini文件中的错误值时,如何解析username from username=字段而不是值?你知道吗

1)Ini文件,用预定义的预设值存储,我需要用python读取

$ cat /var/tmp/file.ini
banner=QUESTIONS sentence
network=lan
programming=pytohn
url=http\://pbx/register?username=E300B1&password=1234&option=localip&localip=
username=E300B1
password=1234
server=pbx

2)代码:我尝试的用户名/密码字段似乎有误

import re,os, time, socket, datetime, threading, subprocess, logging, gtk, gobject
logging.basicConfig(filename='/var/tmp/log.log',level=logging.DEBUG)

def readini(findme):
  f = open('/var/tmp/file.ini', "r")
  for line in f:
    if line:
      if findme in line:
        r= line.split("=")
        return r[1].replace("\\n", "").rstrip()

host = readini("server")
username = preadini("username")
password = readini("password")

command = """curl 'http://%s/a/b?username=%s&password=%s&language=EN'""" % (host, username, password)
logging.debug( command )
os.system( command )

3)输出(错误):

DEBUG:root:curl 'http://192.168.1.10/a/b?username=http\://pbx/register?username&password=http\://pbx/register?username&language=EN'

4)预期产量为:

DEBUG:root:curl 'http://192.168.1.10/a/b?username=E300B1&password=1234&language=EN'

Tags: debugregisterhttpvarlogginglineusernamepassword
1条回答
网友
1楼 · 发布于 2024-09-30 01:23:47

问题是您的条件if findme in line不适用于您的文件。在您的文件中,字符串“username”位于定义url的行中,这就是您看到输出的原因

 url=http\://pbx/register?username=E300B1&password=1234&option=localip&localip=

更好的方法是:

def readini(findme):
  f = open('/var/tmp/file.ini', "r")
  for line in f:
    if "=" in line:
        key,val = line.split("=",1)
        if findme in key:
            return val.replace("\\n", "").rstrip()

使用可选的int-arg分割可以保证返回的列表长度为2,并且它实际上是该行定义的key,val对

相关问题 更多 >

    热门问题