将程序日志保存到文本文件中

Posted

技术标签:

【中文标题】将程序日志保存到文本文件中【英文标题】:Save program logs into a text file 【发布时间】:2022-01-22 16:43:16 【问题描述】:

我想将程序日志(显示在屏幕中)保存到一个文本文件中,但我在集成 def() 部分时遇到了困难。

到目前为止,我的 data_log 是(保存在文件中):

日期和时间:2021-12-21 16:05:50.927868

输入:[1, 4, 9, 16, 25]

递归:[[3, 5, 7, 9], [2, 2, 2], [0, 0], [0]]

在这方面,我想保存此查询末尾所述的程序日志,而不是我的 data_log 程序。我是一名高中生。

user = input("Name:")

def shrink(numbers, return_list=[]):
    n1 = [(x, numbers[i + 1]) for i, x in enumerate(numbers) if i < len(numbers) - 1]
    n2 = [x[1] - x[0] for x in n1]

    return_list.append(n2)

    if (len(n2) > 1):
        return shrink(n2, return_list)
    else:
        return return_list

input_user = input("Enter data:")
b = input_user.split()
for num in range(len(b)):
    b[num] = int(b[num])
c = shrink(b)
print(c)

def sequence_identifier():
    from fractions import Fraction


    #3 Quadratic Sequence
    if len(c[0:len(c)]) >= 2:
        if c[1][:-1] == c[1][1:] and sum(c[1]) != 0 and len(c[1]) > 1:
            print('Sequence type: quadratic sequence')
            x = Fraction((c[1][0])/2)
            y = Fraction(c[0][0]-(x*3))
            z = Fraction(1 - (x + y))
            print('The general formula is: an^2 + bn + c')
            print('a:',str(x))
            print('b:',str(y))
            print('c:',str(z))
            print('Would you like to find an nth term?[Press 1]')
            Yes3 = int(input())
            if Yes3 == 1:
                while True:
                    nth3_1 = int(input('What is the nth term:'))
                    nthterm3_1 = ((x)*(nth3_1**2) + (y*nth3_1) + z)
                    print('The nth term is', nthterm3_1)
                    print('Would you like to try again?')
                    confirmloop3_1 = int(input('Press 1 to continue:'))
                    if confirmloop3_1 == 1: continue
                    else: break

sequence_identifier()

# I want to modify this:
with open(user, 'a+') as data_log:
    from datetime import datetime
    data_log.write(str('_'*100))
    data_log.write('\n')
    data_log.write('Date and Time: '+ str(datetime.now()))
    data_log.write('\n')
    data_log.write('Input: '+ str(b))
    data_log.write('\n')
    data_log.write('Recursion: '+ str(c))
    data_log.write('\n')
    data_log.close()

这个程序的屏幕日志是: (斜体为输入)

姓名:拉尔夫

输入数据:1 4 9 16 25

[[3, 5, 7, 9], [2, 2, 2], [0, 0], [0]]

序列类型:二次序列

一般公式为:an^2 + bn + c

一:1

b: 0

c: 0

您想找到第 n 个词吗?[按 1]

1

第n个词是什么:10

第n项是100

您要再试一次吗?

按 1 继续:2

【问题讨论】:

嘿,我可以尝试帮助,但您到底想修改什么,如果您想保存所有输入,您可以继续将值写入 data_log,就像您为 b 所做的那样。跨度> 谢谢。我只想保存终端中的所有内容:就像复制粘贴一样。 【参考方案1】:

您可以使用 logging 包并提供一些 basicConfig 以将日志保存为所需格式

import logging

logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logging.warning('This will get logged to a file')

您可以根据您正在编写的日志来使用 logging.error、logging.info、logging.debug。 所有这些日志都将存储在文件名中提到的文件中。

【讨论】:

以上是关于将程序日志保存到文本文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何将 telnet 输出日志保存到文本文件

Java将多行字符串保存到文本文件

将文本框中的数据保存到文本文件中

如何将变量保存到新的文本文件中,以便下次程序运行时加载这些变量?

将 udid 字符串保存到文本文件

Scinillanet,如何将其文本保存到文件中?