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

Amandineld -  
tpez Messages postés 359 Statut Membre -
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 359 Statut Membre 39
 
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