Python 逐行读取文本文件中的键/值对,并将值/dict传递给urlopen http函数

Python 逐行读取文本文件中的键/值对,并将值/dict传递给urlopen http函数,python,Python,我必须在网页上填写多个表单字段 我已完成http POST部分,因此可以将数据发布到网页。 我还完成了创建键/值对字典并在网页上填写表单字段的部分 键/值对: input1 = {'hostname' : 'host', 'port' : '22', 'basedn' : 'CN=Users', 'bindusername' : 'admin', 'bindpassword' : 'passwd', 'groupname' : 'CN=Group,CN=Users,DC=tech,DC=com'

我必须在网页上填写多个表单字段
我已完成http POST部分,因此可以将数据发布到网页。
我还完成了创建键/值对字典并在网页上填写表单字段的部分

键/值对:

input1 = {'hostname' : 'host', 'port' : '22', 'basedn' : 'CN=Users', 'bindusername' : 'admin', 'bindpassword' : 'passwd', 'groupname' : 'CN=Group,CN=Users,DC=tech,DC=com', 'usernameattribute' : 'name'}

for line in open("/Users/rwettstein/Scripts/Files/ldap-settings.txt", "r"):
    print line
    input = line
    time.sleep(10)

    params = urllib.urlencode(dict(input))

try:
    f_handler = urlopen('https://hostname/path/file.php', params)
    except urllib2.HTTPError, error:
        print "Error Code: %s" % error.code
但是,如果我将密钥/值对信息放入文本文件,然后从文本文件中读取数据,逐行从文件中读取数据,将其编码到字典中,然后将其传递给Http请求,则会出现以下错误:

ValueError: dictionary update sequence element #0 has length 1; 2 is required

发生此错误是因为从file read函数传递的值只返回一个参数吗?

这是因为文件中的每一行都是一个字符串。您需要一个
键、值
对来更新字典。如果您在问题中发布文件中的样本行,我可以向您展示如何将其拆分为所需的

编辑:如何从文本文件中分割行

line = "{'hostname' : 'host', 'port' : '22', 'basedn' : 'CN=Users', 'bindusername' : 'admin', 'bindpassword' : 'passwd', 'groupname' : 'CN=Group,CN=Users,DC=tech,DC=com', 'usernameattribute' : 'name'}"

pairs = line[1:-1].replace("'", '').split(', ')
pairs = [pair.split(":") for pair in pairs]
for pair in pairs:
    pair = [i.strip() for i in pair]
通过此项=听写(成对)

希望这有助于

将每一行解析成一个dict。我对您的代码做了一些修改,以展示它是如何完成的

import ast

input1 = {'hostname' : 'host', 'port' : '22', 'basedn' : 'CN=Users', 'bindusername' : 'admin', 'bindpassword' : 'passwd', 'groupname' : 'CN=Group,CN=Users,DC=tech,DC=com', 'usernameattribute' : 'name'}

for line in open("/Users/rwettstein/Scripts/Files/ldap-settings.txt", "r"):
    print line
    # this assumes each line has a dictionary literal in it.
    # you can add more robust processing (e.g. skipping empty lines
    # or lines starting with #)
    input = ast.literal_eval(line.strip())
    time.sleep(10)

    # this assumes input is a dict or a sequence of key/value tuples.
    params = urllib.urlencode(input)

try:
    f_handler = urlopen('https://hostname/path/file.php', params)
    except urllib2.HTTPError, error:
        print "Error Code: %s" % error.code

我在文本文件中使用以下键/值对:这是文本文件中的一行:{'hostname':'host','port':'22','basedn':'CN=Users','bindusername':'admin','bindpassword':'passwd','groupname':'CN=Group,CN=Users,DC=tech,DC=com','usernameattribute':'name'}这是我的文本文件中的一行:{'hostname':'host','port':'22','basedn':'CN=Users','bindusername':'admin','bindpassword':'passwd','groupname':'CN=Group,CN=Users,DC=tech,DC=com','usernameattribute':'name'}嗨,感谢您提供的信息。我尝试了你的代码片段,但仍然得到相同的错误。我对“split”方法不太熟悉,所以我将对它进行检查,以了解它是如何工作的。感谢该漏洞已经修复并测试。它现在可以按您希望的方式工作。