Kierowanie wydruku do a.txt plik

Czy istnieje sposób na zapisanie całości wydruku do pliku txt w Pythonie? Powiedzmy, że mam te dwie linie w kodzie i chcę zapisać wydruk do pliku o nazwie output.txt.

print ("Hello stackoverflow!")
print ("I have a question.")

Chcę, aby plik output.txt zawierał

Hello stackoverflow!
I have a question.
Author: martineau, 2016-04-12

7 answers

Podaj print argument ze słowem kluczowym file, gdzie wartością argumentu jest strumień pliku. Możemy utworzyć strumień plików za pomocą funkcji open:

print("Hello stackoverflow!", file=open("output.txt", "a"))
print("I have a question.", file=open("output.txt", "a"))

Z dokumentacji Pythona O print:

Argument file musi być obiektem z metodą write(string); jeśli nie występuje lub None, sys.stdout zostaną wykorzystane.

I dokumentacja dla open:

Otwórz file i zwróć odpowiedni obiekt file. Jeśli plik nie można otworzyć, jest podniesiony OSError.

"a" jako drugi argument open oznacza "Dołącz" - innymi słowy, istniejąca zawartość pliku nie zostanie nadpisana. Jeśli chcesz, aby plik został nadpisany, użyj "w".


Wielokrotne otwieranie pliku za pomocą open nie jest jednak idealne dla wydajności. Najlepiej otworzyć ją raz i nazwać, a następnie przekazać tę zmienną do print ' S file opcja. Musisz pamiętać o zamknięciu pliku potem!

f = open("output.txt", "a")
print("Hello stackoverflow!", file=f)
print("I have a question.", file=f)
f.close()

Istnieje również skrót składniowy, który jest blokiem with. Spowoduje to zamknięcie pliku na końcu bloku dla Ciebie:

with open("output.txt", "a") as f:
    print("Hello stackoverflow!", file=f)
    print("I have a question.", file=f)
 139
Author: Aaron Christiansen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-01 15:08:39

Możesz przekierować stdout do pliku " output.txt": {]}

import sys
sys.stdout = open('output.txt','wt')
print ("Hello stackoverflow!")
print ("I have a question.")
 20
Author: Roman Bronshtein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-23 20:41:56

Użyj modułu logowania

def init_logging():
    rootLogger = logging.getLogger('my_logger')

    LOG_DIR = os.getcwd() + '/' + 'logs'
    if not os.path.exists(LOG_DIR):
        os.makedirs(LOG_DIR)
    fileHandler = logging.FileHandler("{0}/{1}.log".format(LOG_DIR, "g2"))
    rootLogger.addHandler(fileHandler)

    rootLogger.setLevel(logging.DEBUG)

    consoleHandler = logging.StreamHandler()
    rootLogger.addHandler(consoleHandler)

    return rootLogger

Pobierz logger:

logger = init_logging()

I rozpocząć rejestrowanie / wyjście (ing):

logger.debug('Hi! :)')
 6
Author: gies0r,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-11 21:41:37

Inną odmianą może być... Pamiętaj, aby później zamknąć plik

import sys
file = open('output.txt', 'a')
sys.stdout = file

print("Hello stackoverflow!") 
print("I have a question.")

file.close()
 1
Author: vic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-13 13:33:11

Inną metodą bez konieczności aktualizacji kodu Pythona byłoby przekierowanie przez konsolę .

Zasadniczo, wykonaj skrypt Pythona print() Jak zwykle, a następnie wywołaj skrypt z wiersza poleceń i użyj przekierowania z wiersza poleceń. Tak:

$ python ./myscript.py > output.txt

Twój plik output.txt będzie teraz zawierał wszystkie dane wyjściowe ze skryptu Pythona.

Edit:
Aby rozwiązać komentarz; w systemie Windows Zmień ukośnik do przodu na ukośnik wsteczny.
(tj. .\myscript.py)

 1
Author: S3DEV,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-27 18:32:19

Załóżmy, że mój plik wejściowy to " input.txt "a plik wyjściowy to" output.txt".

Rozważmy, że plik wejściowy ma szczegóły do odczytania:

5
1 2 3 4 5

Kod:

import sys

sys.stdin = open("input", "r")
sys.stdout = open("output", "w")

print("Reading from input File : ")
n = int(input())
print("Value of n is :", n)

arr = list(map(int, input().split()))
print(arr)

Więc to będzie odczytywane z pliku wejściowego, a wyjście będzie wyświetlane w pliku wyjściowym.

Aby uzyskać więcej informacji, zobacz https://www.geeksforgeeks.org/inputoutput-external-file-cc-java-python-competitive-programming/

 0
Author: Chandra Shekhar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-25 11:51:43

Można bezpośrednio zapisać zwrócone wyjście funkcji w pliku.

print(output statement, file=open("filename", "a"))
 -3
Author: Asiis Pradhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-19 19:14:06