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.
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 lubNone
,sys.stdout
zostaną wykorzystane.
Otwórz
file
i zwróć odpowiedni obiekt file. Jeśli plik nie można otworzyć, jest podniesionyOSError
.
"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)
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.")
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! :)')
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()
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
)
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/
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"))
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