У меня есть приложение, которое работает. Но в интересах попытки лучше понять функции и питон. Я пытаюсь разделить его на различные функции.Как разбить код на более мелкие функции
Я застрял в функции file_IO. Я уверен, что причина, по которой она не работает, заключается в том, что основная часть приложения не понимает читателя или писателя. Чтобы лучше объяснить, вот полная копия приложения .
Также мне очень интересно об использовании csv.DictReader и csv.DictWriter. есть либо предоставить какие-либо преимущества/недостатки текущего кода?
Я полагаю, еще один способ сделать это с помощью классов, честно говоря, я бы как знать, как это сделать.
#!/usr/bin/python
""" Description This script will take a csv file and parse it looking for specific criteria.
A new file is then created based of the original file name containing only the desired parsed criteria.
"""
import csv
import re
import sys
searched = ['aircheck', 'linkrunner at', 'onetouch at']
def find_group(row):
"""Return the group index of a row
0 if the row contains searched[0]
1 if the row contains searched[1]
etc
-1 if not found
"""
for col in row:
col = col.lower()
for j, s in enumerate(searched):
if s in col:
return j
return -1
#Prompt for File Name
def file_IO():
print "Please Enter a File Name, (Without .csv extension): ",
base_Name = raw_input()
print "You entered: ",base_Name
in_Name = base_Name + ".csv"
out_Name = base_Name + ".parsed.csv"
print "Input File: ", in_Name
print "OutPut Files: ", out_Name
#Opens Input file for read and output file to write.
in_File = open(in_Name, "rU")
reader = csv.reader(in_File)
out_File = open(out_Name, "wb")
writer = csv.writer(out_File, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
return (reader, writer)
file_IO()
# Read header
header = reader.next()
stored = []
writer.writerow([header[0], header[3]])
for i, row in enumerate(reader):
g = find_group(row)
if g >= 0:
stored.append((g, i, row))
stored.sort()
for g, i, row in stored:
writer.writerow([row[0], row[3]])
# Closing Input and Output files.
in_File.close()
out_File.close()
У вас есть немало вопросов, некоторые из которых не относятся к теме (слишком широкие) для SO. Пожалуйста, упростите и уточните только один вопрос. – isherwood
Если вы можете заставить свой код работать, тогда вопросы об его очистке и улучшении стиля гораздо лучше подходят для сайта codereview: http://codereview.stackexchange.com/ – shuttle87
Хорошо, справедливо, тогда будет актуальный вопрос. С текущим кодом я получаю сообщение об ошибке последующого ./test.py Пожалуйста, введите имя файла (без расширения .csv): YouTubeVideoViewsDec2014 Вы ввели: YouTubeVideoViewsDec2014 входной файл: YouTubeVideoViewsDec2014.csv выходных файлов: YouTubeVideoViewsDec2014.parsed. CSV Traceback (самый последний вызов последнего): Файл "./test.py", строка 56, в заголовка = reader.next() NameError: имя 'читатель' не определен –