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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Partager