mettre en mémoire au lieu d’écrire dans un fichier tampon ?
Bonjour,
Je récupère un fichier je le met dans un fichier texte, puis je lis le fichier texte ligne à ligne pour copier ce que je veux dans un autre fichier texte, et en fin je recopie et ordonne les informations dans un dernier fichier texte.
Que je finis par mettre dans un fichier csv pour pouvoir le traiter plus facilement.
Alors oui cela fonctionne mais en relisant mon code je me dis que je me suis surement vachement compliqué la tache.
Je me dis également que créer des fichiers tempo pour a chaque fois le lire, et copier les valeurs est surement gourmand en ressource.
Y aurait il un moyen de remplacer l'écriture dans un fichier text pour par exemple le mettre dans un fichier virtuel ou un truc du genre qui serait plus rapidement accessible par python que de lire un fichier txt ?
J'espère avoir été assez clair pour que vous puissiez me donner une piste à creuser.
Merci d'avance
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| fichier_source = open(outputfile, "r")
fichier_destination = open(outputfile_mod, "w")
for ligne in fichier_source:
temp = str(ligne).lstrip()
if temp[:12] == "(0008, 0104)":
fichier_destination.write(temp)
elif temp[:12] == "(0008, 0100)":
fichier_destination.write(temp)
elif temp[:12] == "(0040, a30a)":
fichier_destination.write(temp)
fichier_source.close()
fichier_destination.close() |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| fichier_source = open(outputfile_mod, "r")
fichier_destination = open(outputfile_final, "w")
lines = fichier_source.readlines()
for i in range(1, len(lines)):
if lines[i][:12] == "(0040, a30a)":
# ligne -6 c'est le tagdicom du groupe de la mesure
tmp = lines[i-6].split("'")
if tmp[1] == '121410': # code d'une non mesure
fichier_destination.write(',')
else:
fichier_destination.write(tmp[1] + ',')
# ligne -5 c'est le nom groupe de la mesure
tmp = lines[i-5].split("'")
if tmp[1] == 'User chosen value': # valeur text d'une non mesure
fichier_destination.write(',')
else:
fichier_destination.write(tmp[1] + ',')
# ligne -4 le tag dicom de la mesure
tmp = lines[i-4].split("'")
fichier_destination.write(tmp[1] + ',')
# ligne -3 le nom de la mesure
tmp = lines[i-3].split("'")
fichier_destination.write(tmp[1] + ',')
fichier_destination.write(" ")
# ligne i la valeur mesurée
tmp = lines[i].split("'")
fichier_destination.write(tmp[1] + ',')
fichier_destination.write(" ")
# ligne -1 l'unité de mesure
tmp = lines[i-1].split("'")
fichier_destination.write(tmp[1])
fichier_destination.write("\n")
fichier_destination.close()
fichier_source.close() |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| nom_fichier = nom_fichier + '.csv'
with open(outputfile_final, 'r') as in_file:
stripped = (line.strip() for line in in_file)
lines = (line.split(",") for line in stripped if line)
with open(nom_fichier, 'w') as out_file:
writer = csv.writer(out_file)
writer.writerow(('code DICOM paramère', 'Nom paramètre',
'Code DICOM mesure', 'Valeur mesurée',
'Mesure', 'Unité mesure'))
writer.writerows(lines)
# Supprime les fichiers temporaires
os.remove(outputfile)
os.remove(outputfile_mod)
os.remove(outputfile_final) |