有没有一种方法可以将所有打印输出保存到python中的txt文件中?可以说我的代码中有这两行,我想将打印输出保存到名为的文件中output.txt。
print ("Hello stackoverflow!")
print ("I have a question.")
我希望output.txt文件包含
Hello stackoverflow!
I have a question.
Answers:
给print一个file关键字参数,其中参数的值是文件流。我们可以使用以下open功能创建文件流:
print("Hello stackoverflow!", file=open("output.txt", "a"))
print("I have a question.", file=open("output.txt", "a"))
所述
file参数必须是与对象write(string)方法; 如果不存在或None,sys.stdout将使用。
和文档open:
打开
file并返回相应的文件对象。如果无法打开文件,OSError则引发。
在" a "作为第二个参数open是指“追加” -换句话说,文件的现有内容不会被覆盖。如果要覆盖文件,请使用"w"。
open但是,多次打开文件对于性能而言并不理想。理想情况下,您应该将其打开一次并命名,然后将该变量传递给print的file选项。您必须记住之后要关闭文件!
f = open("output.txt", "a")
print("Hello stackoverflow!", file=f)
print("I have a question.", file=f)
f.close()
还有一个语法上的捷径,即代码with块。这将在代码块末尾为您关闭文件:
with open("output.txt", "a") as f:
print("Hello StackOverflow!", file=f)
print("I have a question.", file=f)
您可以将标准输出重定向到文件“ output.txt”:
import sys
sys.stdout = open('output.txt','wt')
print ("Hello stackoverflow!")
print ("I have a question.")
使用日志记录模块
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! :)')
无需完全更新Python代码的另一种方法是通过控制台重定向。
基本上,print()像往常一样使用Python脚本,然后从命令行调用脚本并使用命令行重定向。像这样:
$ python ./myscript.py > output.txt
您的output.txt文件现在将包含Python脚本的所有输出。
编辑:
解决评论;对于Windows,请将正斜杠更改为反斜杠。
(即.\myscript.py)
假设我的输入文件是“ 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/
可以将函数的返回输出直接存储在文件中。
print(output statement, file=open("filename", "a"))