98 votes

Python: Imprimer dans un Fichier

Pourquoi n'essayez d'imprimer directement un fichier au lieu de sys.stdout produire les éléments suivants erreur de syntaxe:

Python 2.7.2+ (default, Oct  4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f1=open('./testfile', 'w+')
>>> print('This is a test', file=f1)
  File "<stdin>", line 1
    print('This is a test', file=f1)
                            ^
SyntaxError: invalid syntax

À partir de l'aide(__les builtins__) j'ai les informations suivantes:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file: a file-like object (stream); defaults to the current sys.stdout.
    sep:  string inserted between values, default a space.
    end:  string appended after the last value, default a newline.

Alors quelle serait la bonne syntaxe pour modifier le flux standard d'impression écrit?

Je sais qu'il y a différent peut-être de meilleures façons d'écrire ce fichier mais je n'ai vraiment pas pourquoi cela devrait être une erreur de syntaxe...

Une belle explication serait appréciée!

138voto

Gandaro Points 1707

Si vous souhaitez utiliser l' print fonction en Python 2, vous devez les importer à partir d' __future__:

from __future__ import print_function

Mais vous pouvez avoir le même effet, sans l'aide de la fonction:

print >>f1, 'This is a test'

73voto

Simon Points 3820

l'impression est un mot-clé en python 2.X. Vous devez utiliser la syntaxe suivante:

f1=open('./testfile', 'w+')
f1.write('This is a test')

44voto

citxx Points 809

print(args, file=f1) est le python 3.x de la syntaxe. Pour python 2.x utiliser print >> f1, args.

6voto

Nam Nguyen Points 1341

En Python 3.0+, print est une fonctionqui vous souhaitez appeler avec print(...). Dans la version antérieure, print est une déclaration, ce qui vous ferait avec print ....

Pour imprimer dans un fichier en Python antérieure à la version 3.0, vous devriez faire:

print >> f, 'what ever %d', i

L' >> de l'opérateur dirige imprimer le fichier f.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X