有没有办法将所有打印输出保存到python中的txt文件?假设我的代码中有这两行,我想将打印输出保存到名为output.txt
的文件中。
print ("Hello stackoverflow!")
print ("I have a question.")
我希望output.txt
文件包含
Hello stackoverflow!
I have a question.
答案 0 :(得分:56)
给print
一个file
关键字参数,其中参数的值是文件流。我们可以使用open
函数创建文件流:
print("Hello stackoverflow!", file=open("output.txt", "a"))
print("I have a question.", file=open("output.txt", "a"))
来自Python documentation about print
:
file
参数必须是具有write(string)
方法的对象;如果不存在或None
,则会使用sys.stdout
。
打开
file
并返回相应的文件对象。如果无法打开文件,则会引发OSError
。
"a"
作为open
的第二个参数意味着“追加” - 换句话说,文件的现有内容不会被覆盖。如果您希望覆盖该文件,请使用"w"
。
多次使用open
打开文件并不是理想的性能。理想情况下,您应该打开一次并命名,然后将该变量传递给print
的{{1}}选项。您必须记得以后关闭该文件!
file
还有一个语法快捷方式,即f = open("output.txt", "a")
print("Hello stackoverflow!", file=f)
print("I have a question.", file=f)
f.close()
块。这将在块结束处为您关闭文件:
with
答案 1 :(得分:12)
您可以将stdout重定向到文件“output.txt”:
import sys
sys.stdout = open('output.txt','wt')
print ("Hello stackoverflow!")
print ("I have a question.")
答案 2 :(得分:5)
使用日志记录模块
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()
开始记录/输出(ing):
logger.debug('Hi! :)')
答案 3 :(得分:0)
一个人可以直接将函数的返回输出存储在文件中。
print(output statement, file=open("filename", "a"))
答案 4 :(得分:0)
另一个变化可能是...请确保稍后关闭文件
import sys
file = open('output.txt', 'a')
sys.stdout = file
print("Hello stackoverflow!")
print("I have a question.")
file.close()
答案 5 :(得分:0)
另一种无需完全更新Python代码的方法是通过控制台重定向。
基本上,像往常一样使用Python脚本print()
,然后从命令行调用脚本并使用命令行重定向。像这样:
$ python ./myscript.py > output.txt
您的output.txt
文件现在将包含Python脚本的所有输出。
答案 6 :(得分:0)
假设我的输入文件是“ 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/][1]