web-dev-qa-db-fra.com

Comment exécuter un script python et écrire la sortie dans un fichier txt?

J'exécute un fichier .py, qui crache une chaîne donnée. Cette commande fonctionne bien

execfile ('file.py')

Mais je veux que la sortie (en plus de l’affichage dans le shell) soit écrite dans un fichier texte.

J'ai essayé ça, mais ça ne marche pas :(

execfile ('file.py')> ('output.txt')

Tout ce que je reçois, c'est ceci:

tugsjs6555

False

J'imagine que "False" fait référence au fichier de sortie non écrit avec succès :(

Merci de votre aide

8
user2957951

vous vérifiez la sortie de execfile('file.py') par rapport à la chaîne 'output.txt'

vous pouvez faire ce que vous voulez faire avec le sous-processus

#!/usr/bin/env python
import subprocess
with open("output.txt", "w+") as output:
    subprocess.call(["python", "./script.py"], stdout=output);
13
Nick Beeuwsaert

Cela fonctionnera également, en raison de l'orientation standard du fichier output.txt avant l'exécution de "file.py":

import sys

orig = sys.stdout
with open("output.txt", "wb") as f:
    sys.stdout = f
    try:
        execfile("file.py", {})
    finally:
        sys.stdout = orig

Sinon, exécutez le script dans un sous-processus:

import subprocess

with open("output.txt", "wb") as f:
    subprocess.check_call(["python", "file.py"], stdout=f)

Si vous souhaitez écrire dans un répertoire, supposez que vous souhaitez coder en dur le chemin du répertoire:

import sys
import os.path

orig = sys.stdout
with open(os.path.join("dir", "output.txt"), "wb") as f:
    sys.stdout = f
    try:
        execfile("file.py", {})
    finally:
        sys.stdout = orig
4
aknuds1

Utilisez ceci à la place:

text_file = open('output.txt', 'w')
text_file.write('my string i want to put in file')
text_file.close()

Mettez-le dans votre fichier principal et lancez-le. Remplacez la chaîne de la 2ème ligne par votre chaîne ou une variable contenant la chaîne à générer. Si vous avez d'autres questions post ci-dessous.

1
Remington Thurber

Le moyen le plus simple d’exécuter un script et d’obtenir la sortie dans un fichier texte consiste à saisir ce qui suit dans le terminal:

PCname: ~/Path/WorkFolderName $ python scriptname.py>output.txt

* Assurez-vous d'avoir créé output.txt dans le dossier de travail avant d'exécuter la commande.

1
Dibin Joseph
file_open = open("test1.txt", "r")
file_output = open("output.txt", "w")

for line in file_open:
    print ("%s"%(line), file=file_output)

file_open.close()
file_output.close()
0
don

en utilisant des indices de Remolten dans les articles ci-dessus et quelques autres liens, j’ai écrit ce qui suit:

from os import listdir
from os.path import isfile, join
folderpath = "/Users/nupadhy/Downloads"
filenames = [A for A in listdir(folderpath) if isfile(join(folderpath,A))]
newlistfiles = ("\n".join(filenames))
OuttxtFile = open('listallfiles.txt', 'w')
OuttxtFile.write(newlistfiles)
OuttxtFile.close()

Le code ci-dessus consiste à répertorier tous les fichiers de mon dossier de téléchargement. Cela enregistre le résultat dans le fichier listallfiles.txt. Si le fichier n'est pas là, il sera créé et remplacé par un nouveau à chaque fois pour exécuter ce code. La seule chose dont vous devez tenir compte, c'est que le fichier de sortie sera créé dans le dossier où votre script py est enregistré. Voyez comment vous allez, espérons que cela vous aidera.

0
Nitin Upadhyay

Si vous exécutez le fichier sous Windows, la commande invite: 

python filename.py >> textfile.txt

La sortie serait redirigée vers textfile.txt dans le même dossier que le fichier filename.py.

Ce qui précède n’est valable que si les résultats sont affichés sur cmd et que vous souhaitez voir le résultat complet sans qu’il soit tronqué.

Vous pouvez également le faire en allant dans le chemin du dossier dans lequel vous avez enregistré le script python avec cmd, puis faites le nom.py> nomfichier.txtIl a fonctionné pour moi sous Windows 10

0
Kanasaki Torisowa