web-dev-qa-db-fra.com

Comment lire / imprimer les données (_io.TextIOWrapper)?

Avec le code suivant, je veux> ouvrir un fichier> lire le contenu et supprimer les lignes non requises> puis écrire les données dans le fichier et également lire le fichier pour les analyses en aval.

with open("chr2_head25.gtf", 'r') as f,\
    open('test_output.txt', 'w+') as f2:
    for lines in f:
        if not lines.startswith('#'):
            f2.write(lines)
    f2.close()

Maintenant, je veux lire les données f2 et poursuivre le traitement dans pandas ou d'autres modules mais je rencontre un problème lors de la lecture des données (f2).

data = f2 # doesn't work
print(data) #gives
<_io.TextIOWrapper name='test_output.txt' mode='w+' encoding='UTF-8'>

data = io.StringIO(f2)  # doesn't work
# Error message
Traceback (most recent call last):
  File "/home/everestial007/PycharmProjects/stitcher/pHASE-Stitcher-Markov/markov_final_test/phase_to_vcf.py", line 64, in <module>
data = io.StringIO(f2)
TypeError: initial_value must be str or None, not _io.TextIOWrapper
13
everestial007

Le fichier est déjà fermé (lorsque le bloc with précédent se termine), vous ne pouvez donc rien faire de plus pour le fichier. Pour rouvrir le fichier, créez-en une autre avec l'instruction et utilisez l'attribut read pour lire le fichier.

with open('test_output.txt', 'r') as f2:
    data = f2.read()
    print(data)
21
abccd