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:")
就可以了。