Problème pour lire mon fichier ligne par ligne : boucle infinie

Fermé
Amandineld - Modifié le 15 juin 2019 à 21:26
tpez Messages postés 330 Date d'inscription lundi 4 juillet 2016 Statut Membre Dernière intervention 17 juin 2019 - 15 juin 2019 à 21:57
Bonjour,
J'ai un problème assez urgent. Je veux lire mon fichier ligne par ligne pour appliquer à chaque ligne des fonctions. Mais quand je le lis, il ne lit uniquament la première ligne du fichier en boucle. Je me retrouve donc dans une boucle infinie. Comme lire la totalité de mon fichier ligne par ligne et non seulement la première ligne ?

Merci

Code :

        def creation_dico(dic_localisation_atlas,name_file,exome_colonne,cohorte_name,dico_transm_ensembl):
         
            dico_DTM={}
            f_in=open(name_file,"r")
         
            dico_file={}
         
            path="vcf_output/"+cohorte_name
         
            if os.path.isdir(path)==False:
                os.mkdir(path,0o755)
         
            for k in exome_colonne:
         
                dico_file[k]=open(path+"/"+k+".txt","w")
                dico_file[k].write("##CHROMOSOME\tN_SNP\tN_gene\t\tInfo\tSNP_Donneur\tSNP_Receveur\n")
         
            colonne7=[]
            colonne7bis=[]
            colonne7ter=[]  
         
            liste_SNP=[]
            variantsYN=[]
         
            chro=1
            indel=0
         
            buf_score={}
            bufs=0
            rf=f_in.readline
            read=rf()
            a=0
         
         
            while read:
         
         
                row=read.split("\t")
                print row
         
         
                if row[0][0]!="#":
         
                    if chro!=row[0]:
                        chro=row[0]
                        print("chromosome",chro)
         
                    liste_SNP.append(row[1])
         
                 variantsYN.append(row[7])
         
                 liste_g=liste_genes(variantsYN)
         
                 liste_transcrit=f_liste_transcrit(variantsYN)
         
                        if len(variantsYN)>0:
                            for k in exome_colonne:
              Variants_communs=comptage_SNP(row[exome_colonne[k][1]],row[exome_colonne[k][0]],row[1],k,variantsYN,dico_DTM,dic_localisation_atlas,liste_g,dico_transm_ensembl,liste_transcrit)
         
            f_in.close()
         
            print("Paire de patient, score global,score transmembrannaire protein atlas, score secretion, score transmembrannaire Ensembl")
         
            for keys in exome_colonne:
                print(keys,exome_colonne[keys][2],exome_colonne[keys][3],exome_colonne[keys][4],exome_colonne[keys][5])  
         
            for k in exome_colonne:
                dico_file[k].close() 
         
         
         
        if os.path.exists("vcf_output")==False:
            os.mkdir("vcf_output")
         
         
        Paris_Cohorte={}
        Paris_Cohorte["1"]=[31,11,0,0,0,0]
        Paris_Cohorte["2"]=[41,13,0,0,0,0]
        Paris_Cohorte["3"]=[40,33,0,0,0,0]
         
         
        parser = argparse.ArgumentParser()
         
        choice = parser.add_argument_group('Choix cohorte')
        choice.add_argument('-c','-cohorte',type=str,choices=["vcf"],required=True)
         
        args = parser.parse_args()
         
        path_in="localisation_simplified.csv"
         
        dic_localisation_atlas=open_localisation(path_in)
         
        membrannaire="transmembranaire/"
         
         
        dico_transm_ensembl=file_ensembl(membrannaire)
         
         
        if args.c :
         
            if args.c=="vcf" :
         
                creation_dico(dic_localisation_atlas,"vcf.vcf",Paris_Cohorte,"Paris",dico_transm_ensembl)

    Modifier / Supprimer le message Modifier le message   Répondre avec citation Répondre avec citation   Multi-citer ce message    0  0 Créer une entrée Blog       



exemple de fichier :
##fileformat=VCFv4.3
##FILTER=<ID=PASS,Description=All filters passed>
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT ...
1 783071 rs142849724 C T . PASS ENSG00000228794;ENST00000624927|ENST00000623808|ENST00000445118|ENST00000448975|ENST00000610067|ENST00000608189|ENST00000609139|ENST00000449005|ENST00000416570|ENST00000623070|ENST00000609009|ENST00000622921 GT C; C; T;|C; C; T;|C; C; C; C; C; C;|T; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C;|T; C; C; C; C;|T; C; C; C;


sortie du terminal :
['##fileformat=VCFv4.3\n']
['##fileformat=VCFv4.3\n']
['##fileformat=VCFv4.3\n']


Merci
A voir également:

1 réponse

tpez Messages postés 330 Date d'inscription lundi 4 juillet 2016 Statut Membre Dernière intervention 17 juin 2019 39
15 juin 2019 à 21:57
Pour lire un fichier ligne par ligne voilà la méthode :

f = open("tonfichier.extension", "r") # On ouvre le fichier
read = f.readlines() # readlines avec un s pour lire toutes les lignes et on met ça dans read qui est un tableau
for line in read:
    print(line)
0