我有一个python的csv阅读器的问题。问题是我想打开并阅读不同的csv文件,但他总是读同一个文件。Python的csv阅读器不断阅读相同的文件
from csv import reader
alphabet = ["a", "b", "c"]
for letter in alphabet:
csv_file = open('/home/desktop/csv/' + letter + '.csv', 'r')
csv_data = reader(csv_file)
问题是他似乎打开其他文件,但他总是读第一个文件。
有没有办法“清理”读者或让他读另一个文件?我甚至试图关闭csv文件,但它不起作用。
完整的代码是这样的
from csv import reader
#Orario
orario_csv_file = '/home/andrea/Scrivania/orario.csv'
orario_csv = open(orario_csv_file)
orario_data = reader(orario_csv)
orario = []
#Corsi
corsi = ["EDILIZIA", "EDILE-ARCHIT", "ELETTRONICA", "TECNOLOGIE_DI_INTERNET", "INFORMATICA", "GESTIONALE", "ENERGETICA", "MECCANICA", "CIVILE_ED_AMBIENTALE", "MEDICA", "ENGINEERING_SCIENCES"]
giorni = ["Lun", "Mar", "Mer", "Gio", "Ven"]
for row in orario_data:
orario.append(row)
for corso in corsi:
nome_corso_file = '/home/andrea/Scrivania/xml/' + corso + '.xml'
nome_corso_xml = open(nome_corso_file, 'wt')
nome_corso_xml.write('<?xml version="1.0"?>' + "\n")
nome_corso_xml.write('<orario>' + "\n")
nome_csv = corso + '_csv'
nome_csv = '/home/andrea/Scrivania/csv/' + corso + '.csv'
nome_corso_csv = open(nome_csv, 'rt')
corso_data = reader(nome_corso_csv)
nome_corso_xml.write(' <corso name="' + corso + '">' + "\n")
for a in range(0, 3):
nome_corso_xml.write(' <anno num="' + str(a+1) + '">' + "\n")
for j in range(1, 6):
nome_corso_xml.write(' <giorno name="' + orario[2][j] + '">' + "\n")
for i in range(3, 12):
lez = orario[i + a*12][j]
if lez == "":
nome_corso_xml.write(' <lezione>' + "-" + '</lezione>' + "\n")
else:
for riga in corso_data:
if riga[0] == lez:
if riga[2] == "":
nome_corso_xml.write(' <lezione name="' + lez + '">' + riga[1] + '</lezione>' + "\n")
else:
for g in range(0, len(riga)):
if riga[g].lower() == orario[2][j].lower():
nome_corso_xml.write(' <lezione name="' + lez + '">' + riga[g+1] + '</lezione>' + "\n")
nome_corso_csv.seek(0)
nome_corso_xml.write(' </giorno>' + "\n")
nome_corso_xml.write(' </anno>' + "\n")
nome_corso_xml.write(' </corso>' + "\n")
nome_corso_xml.write('</orario>' + "\n")
nome_corso_xml.close()
他打开“EDILIZIA.csv”,并编制了“EDILIZIA.xml”,那么他就应该打开“EDILE-ARCHIT.csv”和编译它的XML,但是当他阅读时,他一直在阅读“EDILIZIA.csv”
下面是您需要的.csv文件。
如果你尽量做到先读EDILIZIA.csv然后EDILE-ARCHIT.csv他会继续使用总是EDILIZIA.csv编译XML,但他应该firt开放EDILIZIA。 csv,编译EDILIZIA.xml,然后阅读EDILE-ARCHIT.csv并编译EDILE-ARCHIT.xml。
如果你看看最后个XML,你会看到EDILE-ARCHIT.xml将只显示EDILIZIA.csv和EDILE-ARCHIT.csv的共同科目
我们需要看到实际从CSV文件读取的代码,而不仅仅是打开文件的代码。但是,有人猜测,我怀疑你的缩进是错误的,代码并没有按照你的想法进行。 –
外'for'行不应缩进。 – Milo
第二个'nome_corso_file'行覆盖之前分配的值。没有意义。 – Milo