Python制作日志本

本博客介绍了一个使用Python编写的命令行日志记录工具,该工具能够将输入的文字以日志形式写入文档,便于跟踪个人电脑使用情况。文章详细解释了代码实现过程,包括如何处理命令行参数、时间戳格式化以及文件写入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python制作日志本

目的与功能

写一个可以从命令提示行中读取一段文字,并以日志的形式写入一个文档中。这个纯粹是我的兴趣使然,为了监督我每天晚上从图书馆回来,用电脑做了什么。那么接下来的过程也是比较坎坷的,所以我慢慢道来。

代码部分

# -*- coding:utf-8 -*-
import time
import argparse


def init_parser():
    p = argparse.ArgumentParser()
    p.add_argument(r'log')
    return p


if __name__ == "__main__":
    log = time.strftime('%Y.%m.%d', time.localtime(time.time()))
    log = "--" * 10 + log + "--" * 10 + "\n"
    parser = init_parser()
    args = parser.parse_args()
    content = args.log or input("record:")
    if content is not "":
        with open(r"C:\Users\***\my_log.txt", 'a') as f:
            f.write(log)
            f.write(content + "\n\n")
            f.flush()
            f.close()
            print("done!")
    else:
        print("Something should be written!")

原理与解释

第一部分
# -*- coding:utf-8 -*-
import time
import argparse

​为了达到制作日志的目的和得到命令提示行中的信息,我们引入相关的库。这里就出现了我遇到的第一个问题,突然报错。因为我的存放文件的文件夹叫编程,所以大概是这个原因。

​ 对此的两个解决方案:

  • 在文件的第一行加上# -*- coding:utf-8 -*-
  • 不要把文件夹以中文命名。
第二部分
def init_parser():
    p = argparse.ArgumentParser()
    p.add_argument(r'log')
    return p

这个部分是初始化获得命令提示行的内容,没有什么好解释的。log是我之后存放内容的变量,所以替换名字也没有问题。

第三部分
if __name__ == "__main__":
    log = time.strftime('%Y.%m.%d', time.localtime(time.time()))
    log = "--" * 10 + log + "--" * 10 + "\n"
    parser = init_parser()
    args = parser.parse_args()
    content = args.log or input("record:")
    if content is not "":
        with open(r"C:\Users\***\my_log.txt", 'a') as f:
            f.write(log)
            f.write(content + "\n\n")
            f.flush()
            f.close()
            print("done!")
    else:
        print("Something should be written!")

这里建议加上f.flush(), 避免内容较多写不完的问题。还有文本文档一定要写绝对路径,不然会在cmd环境中可能出现找不到文件的问题。

至此,代码的问题已经搞定,接下来是操作上的问题。

操作使用手册

  • 在写入文件的时候,需要在内容的两侧写上" ,如:"this is content!"
  • 不建议写入中文(但是可以),因为文本文档使用GBK而python基本上是UTF-8

后记

补充正常input()写入日志的方法,其实很简单,只是把content = args.log改成content = args.log or input("record:")就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值