У меня проблема с читателем csv python. Проблема в том, что я хочу открывать и читать разные файлы csv, но он постоянно читает то же самое.Читатель csv Python продолжает читать тот же файл
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.
Если вы посмотрите на заключительных XMLs, вы увидите, что EDILE-ARCHIT.xml будет отображать только общие предметы EDILIZIA.csv и EDILE-ARCHIT.csv
Нам нужно увидеть код, который действительно читается из файла CSV, а не только код для открытия файла. Однако, предположим, я подозреваю, что у вас неправильный отпечаток, и код не делает то, что вы считаете. –
Внешняя строка 'for' не должна быть отступом. – Milo
Вторая строка 'nome_corso_file' переопределяет ранее назначенное значение в предыдущей строке. Без разницы. – Milo