CSV Reader работает, Проблема с писателем CSV - PullRequest
0 голосов
/ 29 октября 2018

Я пишу очень простой скрипт на Python, чтобы ПРОЧИТАТЬ CSV (без проблем) и написать в другой CSV (проблема):

Информация о системе:

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

Пример данных: События Office

Цель состоит в том, чтобы отфильтровать события на основе критериев и записать их в другой 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'

Я пытался использовать различные закомментированные утверждения

Например:

  • "" против r "" против r '' против b ''
  • if row[3] > int(0) **vs** if row[3] > str(0)

Каждый раз, когда я выполняю свой сценарий, он создает файл ... поэтому первая строка csv writer работает (создать и открыть файл) ... вторая строка (для записи заголовков) - это когда появляется ошибка ...

Возможно, я путаюсь с синтаксисом из-за версий Python, или, возможно, я неправильно использую библиотеку CSV, или (более чем вероятно) я бесконечно узнаю о типе ввода-вывода и преобразовании данных ... кто-то, пожалуйста, помогите !!

Мне известно о избытке библиотек импорта - скрипт пришел из другого базового скрипта для перемещения файлов из одного места в другое на основе имени файла и вывода счетчика строк для каждого перемещаемого файла. С учетом вышесказанного, я могу не знать о каких-либо отсутствующих / необходимых библиотеках

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы, проблемы или разъяснения Заранее спасибо!

1 Ответ

0 голосов
/ 29 октября 2018

Похоже, вы звоните:

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

Аргумент 'wb' - это режим file . «B» означает, что вы открываете файл, в который пишете, в двоичном режиме. Затем вы пытаетесь написать строку, которая не соответствует ожиданиям.

Попробуйте избавиться от 'b' в 'wb'.

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

Дайте мне знать, если это работает для вас.

...