我在使用 python 的 csv 阅读器时遇到问题。问题是我想打开和阅读不同的 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,但他应该先打开 EDILIZIA.csv,编译 EDILIZIA.xml,然后阅读 EDILE-ARCHIT.csv 并编译 EDILE-ARCHIT.xml。
如果您查看最终的 xml,您会发现 EDILE-ARCHIT.xml 将仅显示 EDILIZIA.csv 和 EDILE-ARCHIT.csv 的常见主题