web-dev-qa-db-fra.com

Python 2.7: Imprimer dans un fichier

Pourquoi essayer d’imprimer directement dans un fichier au lieu de sys.stdout génère-t-il l’erreur de syntaxe suivante:

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

De l'aide (__ 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 changer le flux standard d’impression écrit dans le flux?

Je sais qu'il existe différentes manières peut-être meilleures d'écrire dans un fichier, mais je ne comprends vraiment pas pourquoi cela devrait être une erreur de syntaxe ...

Une belle explication serait appréciée!

91
alex

Si vous souhaitez utiliser la fonction print dans Python 2, vous devez importer à partir de __future__:

from __future__ import print_function

Mais vous pouvez aussi avoir le même effet sans utiliser la fonction:

print >>f1, 'This is a test'
131
Gandaro

print est un mot clé dans python 2.X. Vous devriez utiliser ce qui suit:

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

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

38
citxx

Vous pouvez exporter une déclaration d’impression dans un fichier sans changer de code. Ouvrez simplement une fenêtre de terminal et lancez votre code de la manière suivante:

python yourcode.py >> log.txt
13
DarkMoon

Cela redirigera votre sortie 'print' vers un fichier:

import sys
sys.stdout = open("file.txt", "w+")
print "this line will redirect to file.txt"
11
Daoctor

Dans Python 3.0+, print est un fonction, que vous appelez avec print(...). Dans les versions antérieures, print est une instruction, que vous feriez avec print ....

Pour imprimer sur un fichier dans Python antérieur à la version 3.0, procédez comme suit:

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

L'opérateur >> dirige l'impression vers le fichier f.

6
Nam Nguyen