我试图从字典创建一个csv,但我收到错误:
in create_csv
writer = csv.writer('userInfo.csv')
TypeError: argument 1 must have a "write" method
代码:
#Create dict file to test
userInfoDict = {'orgID': '17', 'firstName': 'TestFirstName', 'lastName': 'TesLastName',
'emailAddress': 'test@test.com', 'phoneNumber': '123-456-7890',
'isoCountryCode': 'US'}
def create_csv(userInfoDict):
import csv
userInfo = open('userInfo.csv', 'wb')
for key in userInfoDict:
if len(userInfoDict['orgID']) == 0:
print('Not a valid user: No orgID')
return None
elif len(userInfoDict['firstName']) == 0:
print('Not a valid user: No First Name')
return None
elif len(userInfoDict['emailAddress']) == 0 or len(userInfoDict['phoneNumber']) == 0:
print('Not a valid user: No Email or Phone')
return None
else:
writer = csv.writer(userInfo, delimiter=',')
for key, value in userInfoDict.items():
writer.writerow([key], [value])
return
create_csv(userInfoDict)
答案 0 :(得分:3)
您应该将文件而不是文件名传递给编写者:
with open('userInfo.csv', 'wb') as userInfoCsv:
writer = csv.writer(userInfoCsv)
你不应该拥有'。'您的变量名称中的符号,因此您的变量应为userInfoCsv
或user_info_csv
userInfo = open('userInfo.csv', 'wb')
为什么要使用此行?您稍后使用with open('userInfo.csv', 'wb')
您可以看到方法csv.DictWriter
with open('userInfo.csv', 'wb') as user_info_csv:
writer = csv.DictWriter(user_info_csv, fieldnames=['your', 'column', 'names'], delimiter=';')
writer.writerow(userInfoDict)
<强>更新强> 包含评论更新的完整功能代码
def create_csv(userInfoDict):
import csv
with open('userInfo.csv', 'wb') as userInfo:
for key in userInfoDict:
if len(userInfoDict['orgID']) == 0:
print('Not a valid user: No orgID')
return None
elif len(userInfoDict['firstName']) == 0:
print('Not a valid user: No First Name')
return None
elif len(userInfoDict['emailAddress']) == 0 or len(userInfoDict['phoneNumber']) == 0:
print('Not a valid user: No Email or Phone')
return None
else:
writer = csv.DictWriter(userInfo, fieldnames=userInfoDict.keys(), delimiter=';')
# writer.writeheader() # If you want to add header
writer.writerow(userInfoDict)