我正在编写一个非常简单的python脚本来读取CSV(没问题)并写入另一个CSV(问题):
系统信息:
目的是根据条件过滤事件,并使用所需条件写入另一个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'
我尝试使用各种注释掉的语句
例如:
if row[3] > int(0) **vs** if row[3] > str(0)
每次执行脚本时,它都会创建文件..因此,第一条csv编写器行有效(创建并打开文件)...第二行(写入标题)是出现错误时...
也许由于python版本,我可能会混淆语法,或者可能是我滥用CSV库,或者(很有可能)我无休止地学习了数据类型IO和转换……有人请帮忙!
我知道导入库过多-脚本来自另一个基本脚本,该脚本根据文件名将文件从一个位置移动到另一个位置,并为每个要移动的文件输出行计数器。 话虽如此,我可能没有意识到任何缺少的/需要的库
如果您有任何疑问,疑虑或澄清,请告诉我 预先感谢!
答案 0 :(得分:0)
您似乎在打电话:
writer = csv.writer(open('file.csv', 'wb'))
'wb'参数是file mode。 “ b”表示您正在以二进制模式打开要写入的文件。然后,您尝试编写一个不符合预期的字符串。
尝试摆脱“ wb”中的“ b”。
writer = csv.writer(open('file.csv', 'w'))
让我知道这是否对您有用。