我编写了用于系统自动化的脚本,但出现标题中描述的错误。我下面的代码是脚本的相关部分。问题是什么?
import csv import os DIR = "C:/Users/Administrator/Desktop/key_list.csv" def Customer_List(csv): customer = open(DIR) for line in customer: row = [] (row['MEM_ID'], row['MEM_SQ'], row['X_AUTH_USER'], row['X_AUTH_KEY'], row['X_STORAGE_URL'], row['ACCESSKEY'], row['ACCESSKEYID'], row['ACCESSKEY1'], row['ACCESSKEYID1'], row['ACCESSKEY2'], row['ACCESSKEYID2'])=line.split() if csv == row['MEM_ID']: customer.close() return(row) else: print ("Not search for ID") return([]) id_input = input("Please input the Customer ID(Email): ") result = Customer_List(id_input) if result: print ("iD: " + id['MEM_ID']
Martin Konec.. 6
对于行
line.split()
你在做什么?看起来像CSV,所以请尝试
line.split(',')
例:
"one,two,three".split() # returns one element ["one,two,three"] "one,two,three".split(',') # returns three elements ["one", "two", "three"]
正如@ TigerhawkT3所提到的,最好使用CSV模块。这里提供了极为简便的方法。
对于行
line.split()
你在做什么?看起来像CSV,所以请尝试
line.split(',')
例:
"one,two,three".split() # returns one element ["one,two,three"] "one,two,three".split(',') # returns three elements ["one", "two", "three"]
正如@ TigerhawkT3所提到的,最好使用CSV模块。这里提供了极为简便的方法。
错误消息是很不言自明的
(a,b,c,d,e) = line.split()
期望line.split()
产生5个元素,但在您的情况下,它仅产生1个元素。这可能是因为数据的格式不符合您的预期,流氓格式错误的行,或者可能是空行-无法知道。
要查看导致问题的行,您可以添加一些调试语句,如下所示:
if len(line.split()) != 11: print line
正如Martin所建议的,您可能还会在错误的定界符上产生分歧。