Skip to main content
 首页 » 编程设计

python之从文本文件中逐行读取键/值对,并将值/字典传递给 urlopen http 函数

2025年05月04日7qq号

我必须在网页上填写多个表单域
我完成了 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 

发生此错误是因为从文件读取函数传递的值仅返回一个参数吗?

请您参考如下方法:

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

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

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] 

pass_this_in = dict(对)

希望对你有帮助