CSV读取器无法正常工作

时间:2018-10-29 16:35:24

标签: csv python-3.6 writer

我正在编写一个非常简单的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和转换……有人请帮忙!

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

如果您有任何疑问,疑虑或澄清,请告诉我 预先感谢!

1 个答案:

答案 0 :(得分:0)

您似乎在打电话:

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

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

尝试摆脱“ wb”中的“ b”。

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

让我知道这是否对您有用。