首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError:参数1必须有一个“写”方法--从dict创建csv

TypeError:参数1必须有一个“写”方法--从dict创建csv
EN

Stack Overflow用户
提问于 2017-02-28 13:04:31
回答 1查看 4.5K关注 0票数 0

我正在尝试从一个dict创建一个csv,但是我收到了错误:

代码语言:javascript
运行
复制
in create_csv
    writer = csv.writer('userInfo.csv')
TypeError: argument 1 must have a "write" method

代码:

代码语言:javascript
运行
复制
#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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-28 13:07:24

您应该将文件传递给作者,而不是将文件名传递给作者:

代码语言:javascript
运行
复制
with open('userInfo.csv', 'wb') as userInfoCsv:
    writer = csv.writer(userInfoCsv)
  1. 你不应该拥有“。”变量名称中的符号,因此变量应该是userInfoCsvuser_info_csv
  2. userInfo = open('userInfo.csv', 'wb'),你为什么要用这一行?稍后使用with open('userInfo.csv', 'wb')打开文件
  3. 您可以看到一个方法csv.DictWriter 使用open('userInfo.csv','wb')作为user_info_csv: writer = csv.DictWriter(user_info_csv,字段名=‘your’,'column',‘name’,定界符=‘;’) writer.writerow(userInfoDict)

带有注释更新的更新完整函数代码

代码语言:javascript
运行
复制
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)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42509508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档