我编写了用于系统自动化的脚本,但出现标题中描述的错误。我下面的代码是脚本的相关部分。问题是什么?
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']
Run Code Online (Sandbox Code Playgroud)
对于行
line.split()
Run Code Online (Sandbox Code Playgroud)
你在做什么?看起来像CSV,所以请尝试
line.split(',')
Run Code Online (Sandbox Code Playgroud)
例:
"one,two,three".split() # returns one element ["one,two,three"]
"one,two,three".split(',') # returns three elements ["one", "two", "three"]
Run Code Online (Sandbox Code Playgroud)
正如@ TigerhawkT3所提到的,最好使用CSV模块。这里提供了极为简便的方法。
错误消息是很不言自明的
(a,b,c,d,e) = line.split()
Run Code Online (Sandbox Code Playgroud)
期望line.split()产生5个元素,但在您的情况下,它仅产生1个元素。这可能是因为数据的格式不符合您的预期,流氓格式错误的行,或者可能是空行-无法知道。
要查看导致问题的行,您可以添加一些调试语句,如下所示:
if len(line.split()) != 11:
print line
Run Code Online (Sandbox Code Playgroud)
正如Martin所建议的,您可能还会在错误的定界符上产生分歧。
| 归档时间: |
|
| 查看次数: |
104891 次 |
| 最近记录: |