python-3.x 将打印输出定向到.txt文件

3bygqnnd  于 2023-03-04  发布在  Python
关注(0)|答案(9)|浏览(214)

在python中,有没有办法把所有的打印输出保存到一个txt文件中?假设我的代码中有这两行,我想把打印输出保存到一个名为output.txt的文件中。

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

我希望output.txt文件包含

Hello stackoverflow!
I have a question.
unftdfkk

unftdfkk1#

给予print一个file关键字参数,参数的值是一个文件流,最好的做法是用open函数打开文件,使用with块,这将确保文件在块的末尾自动关闭:

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

从关于print的Python文档中:
file参数必须是具有write(string)方法的对象;如果不存在,则使用Nonesys.stdout
以及open的文档:
打开file,返回对应的文件对象,如果文件打不开,则引发OSError
作为open的第二个参数的"a"意味着“append”-换句话说,文件的现有内容不会被覆盖。如果你想在with块的开头覆盖文件,使用"w"
with代码块很有用,因为如果不这样做,您需要记住自己像这样关闭文件:

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

uemypmqf2#

您可以将标准输出重定向到文件“output.txt”中:

import sys
sys.stdout = open('output.txt','wt')
print ("Hello stackoverflow!")
print ("I have a question.")
pdkcd3nj

pdkcd3nj3#

另一个根本不需要更新Python代码的方法是通过控制台重定向
基本上,像往常一样使用Python脚本print(),然后从命令行调用脚本并使用命令行重定向。

$ python ./myscript.py > output.txt

output.txt文件现在将包含Python脚本的所有输出。

    • 编辑:**

处理意见;对于Windows,请将正斜杠更改为反斜杠。
(i.e. .\myscript.py

ukxgm1gy

ukxgm1gy4#

使用日志记录模块

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

获取记录器:

logger = init_logging()

并开始记录/输出:

logger.debug('Hi! :)')
qoefvg9y

qoefvg9y5#

另一个变体可以是...请确保随后关闭文件

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

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

file.close()
vmpqdwk3

vmpqdwk36#

假设我的输入文件是"input.txt",输出文件是"output.txt"。
让我们考虑输入文件有细节要读:

5
1 2 3 4 5

代码:

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)

因此,这将从输入文件读取,输出将显示在输出文件中。
有关详细信息,请参见https://www.geeksforgeeks.org/inputoutput-external-file-cc-java-python-competitive-programming/

ep6jt1vc

ep6jt1vc7#

确保导入 sys 模块。打印您想要写入和保存的任何内容。在 sys 模块中,我们有 stdout,它接受输出并存储它。然后关闭 sys.stdout。这将保存输出。

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

sys.stdout = open("/home/scilab/Desktop/test.txt", "a")
sys.stdout.close()
khbbv19g

khbbv19g8#

从Python 3.4开始,我们有redirect_stdout:

import contextlib

with open('output.txt', 'w') as f, contextlib.redirect_stdout(f):
    print("Hello stackoverflow!")
    print("I have a question.")
0h4hbjxa

0h4hbjxa9#

可以直接将函数的返回输出追加到文件中。

print(output statement, file=open("filename", "a"))

相关问题