2010-06-30 5 views
0

J'ai créé la fonction ci-dessous:Ouvrir un fichier dans une fonction et y écrire

def print_form(x): 
    f = open('/home/rv/Plone/Zope-2.10.11-final-py2.4/Extensions/test.fasta', 'w') 
    f.write(str(x)) 
    f.close() 
    return x 

La fonction retourne et impressions, mais ne marche pas écrire dans un fichier ou crée?


EDIT

J'editied le code au-dessus du le fichier a été créé dans un endroit précis, mais il ny a pas encore là

+3

Etes-vous sûr de chercher au bon endroit le fichier? Comment invoquez-vous le script? – Amber

+0

Que voulez-vous dire, il imprime? –

+0

Une variable est analysée par la fonction. par exemple. name = 'david', print print_form (nom) –

Répondre

1

Le fichier « form.fasta » sera créé dans le répertoire de travail actuel. C'est généralement le répertoire dans lequel vous vous trouvez lorsque vous invoquez le script.

Pour voir ce que votre répertoire actuel, ajouter:

print(os.path.abspath(os.curdir)) 

ou équivalent.

De même, assurez-vous que f.write(x) convertit x en quelque chose qui peut être écrit; vous pouvez vouloir f.write(str(x)) ou f.write(repr(x)) ou même f.write(unicode(x)). Enfin, le fait que vous ayez appelé f.close() ne signifie pas nécessairement que le système d'exploitation l'a immédiatement vidé sur le disque. (Je n'arrive pas à trouver un Python équivalent à la fonction setvbuf() de C, qui permettrait de passer un flux de fichier en mode sans tampon.)

P.S. Une dernière chose: Si x est, disons, un entier, il suffit de l'écrire dans un fichier pour terminer le fichier avec un caractère de fin de ligne. Si vous avez un fichier d'une ligne sans ligne et que vous l'imprimez, et que vous êtes comme moi et que vous avez une chaîne d'invite bash qui commence par le code de contrôle d'effacement, elle ressemble exactement à la sortie que vous obtenez à partir d'un fichier vide.

Questions connexes