【问题标题】:CSV Reader works, Trouble with CSV writerCSV 阅读器工作,CSV 写入器出现问题
【发布时间】:2018-10-29 16:35:24
【问题描述】:

我正在编写一个非常简单的 python 脚本来读取 CSV(没问题)并写入另一个 CSV(问题):

系统信息:

  • Windows 10
  • Powershell
  • Python 3.6.5 :: Anaconda, Inc.

样本数据:Office Events

目的是根据条件过滤事件,并写入具有所需条件的另一个 CSV。

例如:

我想从此 CSV 中读取并写入注册(或第 4 列)大于 0 的事件(删除注册 = 0 的行)

# SCRIPT TO FILTER EVENTS TO BE PROCESSED

import os
import time
import shutil
import os.path
import fnmatch
import csv
import glob
import pandas


# Location of file containing ALL events
path = r'allEvents.csv'

# Writes to writer
writer = csv.writer(open(r'RegisteredEvents' + time.strftime("%m_%d_%Y-%I_%M_%S") + '.csv', "wb"))
writer.writerow(["Event Name", "Start Date", "End Date", "Registrations", "Total Revenue", "ID", "Status"])
#writer.writerow([r'Event Name', r'Start Date', r'End Date', r'Registrations', r'Total Revenue', r'ID', r'Status'])
#writer.writerow([b'Event Name', b'Start Date', b'End Date', b'Registrations', b'Total Revenue', b'ID', b'Status'])

def checkRegistrations(file):
    reader = csv.reader(file)
    data = list(reader)
    for row in data:
       #if row[3] > str(0):
        if row[3] > int(0):
            writer.writerow(([data]))

我继续得到的错误是:

    writer.writerow(["Event Name", "Start Date", "End Date", "Registrations", "Total Revenue", "ID", "Status"])
    TypeError: a bytes-like object is required, not 'str'

我尝试过使用各种注释掉的语句

例如:

  • "" vs r"" vs r'' vs b''
  • if row[3] > int(0) **vs** if row[3] > str(0)

每次我执行我的脚本时,它都会创建文件..所以第一个 csv 写入器行工作(创建并打开文件)......第二行(写入标题)是出现错误的时候......

也许我因为 python 版本而混淆了语法,或者我滥用了 CSV 库,或者(很可能)我有无穷无尽的学习数据类型 IO 和转换......请有人帮忙!

我知道导入库过多——脚本来自另一个基本脚本,用于根据文件名将文件从一个位置移动到另一个位置,并为每个被移动的文件输出一个行计数器。 话虽如此,我可能不知道有任何缺失/需要的库

如果您有任何问题、疑虑或澄清,请告诉我 提前致谢!

【问题讨论】:

  • 抱歉忘记添加最后一行代码来执行定义的函数(考虑到函数调用点之前发生的错误,这并不重要)** checkRegistrations(path)**

标签: csv python-3.6 writer


【解决方案1】:

看起来你在打电话:

writer = csv.writer(open('file.csv', 'wb'))

“wb”参数是file mode。 'b' 表示您正在以二进制模式打开要写入的文件。然后,您正在尝试编写一个不符合预期的字符串。

尝试去掉“wb”中的“b”。

writer = csv.writer(open('file.csv', 'w'))

让我知道这是否适合您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多