Hallo, ich hatte gehofft, jemand könnte mir mit meiner College-Kursarbeit helfen, ich habe ein Problem mit meinem Code. Ich bekomme immer wieder einen Speicherfehler mit meinem Datenexport.Speicherfehler beim Exportieren von Daten in CSV-Datei
Gibt es eine Möglichkeit, den verwendeten Speicher zu reduzieren oder gibt es einen anderen Ansatz?
Für die Kursarbeit habe ich eine Datei mit 300 Datensätzen über Kundenaufträge aus einer CSV-Datei erhalten und dann muss ich die Freitag-Datensätze in eine neue CSV-Datei exportieren. Auch ich bin verpflichtet, die populärste Methode für Kundenaufträge und das gesamte Geld, das von den Aufträgen erhoben wird, zu drucken, aber ich habe einen einfachen Plan dafür.
Dies ist mein erstes Mal mit CSV arbeiten, so dass ich nicht sicher bin, wie es geht. Wenn ich das Programm starte, stürzt es sofort ab oder reagiert nicht mehr. Sobald es mit "MEMORY ERROR" erschienen ist, ist das alles, womit es erschienen ist. Ich benutze einen Computer zur Verfügung gestellt College, so dass ich bin mir nicht sicher über die genauen Angaben, aber ich weiß, es läuft 4 GB Speicher.
definieren Zählung OCCURENCES vordefinierte Funktion
def countOccurences(target,array):
counter = 0
for element in array:
if element == target:
counter= counter + 1
print counter
return counter
benutzerdefinierte Funktionen für das Programm Datainput Funktion zum Sammeln von Daten von bereitgestellt Datei verwendet Erstellung
def dataInput():
import csv
recordArray = []
customerArray = []
f = open('E:\Portable Python 2.7.6.1\Choral Shield Data File(CSV).csv')
csv_f = csv.reader(f)
for row in csv_f:
customerArray.append(row[0])
ticketID = row[1]
day, area = datasplit(ticketID)
customerArray.append(day)
customerArray.append(area)
customerArray.append(row[2])
customerArray.append(row[3])
recordArray.append(customerArray)
f.close
return recordArray
def datasplit(variable):
day = variable[0]
area = variable[1]
return day,area
def dataProcessing(recordArray):
methodArray = []
wed_thursCost = 5
friCost = 10
record = 0
while record < 300:
method = recordArray[record][4]
methodArray.append(method)
record = record+1
school = countOccurences('S',methodArray)
website = countOccurences('W',methodArray)
if school > website:
school = True
elif school < website:
website = True
dayArray = []
record = 0
while record < 300:
day = recordArray[record][1]
dayArray.append(day)
record = record + 1
fridays = countOccurences('F',dayArray)
wednesdays = countOccurences('W',dayArray)
thursdays = countOccurences('T', dayArray)
totalFriCost = fridays * friCost
totalWedCost = wednesdays * wed_thursCost
totalThurCost = thursdays * wed_thursCost
totalCost = totalFriCost + totalWedCost + totalThurCost
return totalCost,school,website
My ersten Versuch einer CSV-Datei zu schreiben
def dataExport(recordArray):
import csv
fridayRecords = []
record = 0
customerIDArray = []
ticketIDArray = []
numberArray = []
methodArray = []
record = 0
while record < 300:
if recordArray[record][1] == 'F':
fridayRecords.append(recordArray[record])
record = record + 1
with open('\Courswork output.csv',"wb") as f:
writer = csv.writer(f)
for record in fridayRecords:
writer.writerows(fridayRecords)
f.close
Mein zweiter Versuch zur CSV beim Schreiben
def write_file(recordArray): # write selected records to a new csv file
CustomerID = []
TicketID = []
Number = []
Method = []
counter = 0
while counter < 300:
if recordArray[counter][2] == 'F':
CustomerID.append(recordArray[counter][0])
TicketID.append(recordArray[counter][1]+recordArray[counter[2]])
Number.append(recordArray[counter][3])
Method.append(recordArray[counter][4])
fridayRecords = [] # a list to contain the lists before writing to file
for x in range(len(CustomerID)):
one_record = CustomerID[x],TicketID[x],Number[x],Method[x]
fridayRecords.append(one_record)
#open file for writing
with open("sample_output.csv", "wb") as f:
#create the csv writer object
writer = csv.writer(f)
#write one row (item) of data at a time
writer.writerows(recordArray)
f.close
counter = counter + 1
#Main Program
recordArray = dataInput()
totalCost,school,website = dataProcessing(recordArray)
write_file(recordArray)
erstens können Sie die genaue Fehlermeldung hinzufügen, die Sie bekommen? 2. Überprüfen Sie, ob auf Ihrem Computer genügend Speicherplatz vorhanden ist. – DrBwts
In der Beschreibung des Problems habe ich erwähnt, mit was es erscheint. Es erschien nur mit "Memory Error" –
Nebenbei ... Sie schließen Ihre Dateien nicht ordnungsgemäß. Sie sollten 'with open()' verwenden, um die Datei automatisch zu schließen oder 'f.close()' (mit Klammern) zu verwenden. Und die erste Funktion ('countOccurences') ist redundant. Wenn das Array eine Liste ist, können Sie die 'list.count' Methode verwenden –