Python:清除文件内容

问题

在Linux或者Windows服务器下面(当然,个人电脑可能也存在此问题),有时候系统运行时间长了,会存在很多日志文件(或者其它缓存文件)。而这些文件,可能在不同的目录中。当然,这时,也可以直接删除相关日志文件和目录,那么这样会导致一个问题——程序可能会因为找不到日志目录而报错。因此,想到一个更简单的办法:

只清除指定目录下面的所有文件的内容(但还是要注意配置目录,数据无价),而不对目录、文件进行删改(只清除文件内容)操作。

python Logo

源码

**********数据无价,请谨慎操作*********
*********针对程序的使用,不承担任何责任***********

请注意以下几点:

  1. 程序需要配置需要清除的目录(请谨慎配置)、日志文件(默认当前目录)地址
  2. 程序基于Python3(我使用Python3.6)
  3. 程序提供日志功能,可自行修改相关代码配置格式.

源码如下:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import os
from pathlib import Path
from datetime import datetime,timedelta
import time
import io

'''

-- 数据无价,请谨慎使用.

Python3 清空文件内容.

主要用于:清除服务器或网站的日志文件.
此程序不会执行任何删除操作,但会清除数据日志记录.

程序自带日志记录.
默认日志记录在当前文件夹下面.

-- 请谨慎使用.

author:prd.
date:2017-02-17 v0.1
Python Version:3.6

'''

def formatDateToStr(dateTimeValue=datetime.now(),formatv='%Y-%m-%d %H:%M:%S'):
        return dateTimeValue.strftime(formatv)

if __name__ == '__main__':
	print("先配置在使用.*********数据无价,谨慎操作**********")
	exit(0)
	# 日志文件名称,默认当前目录
	logPath = "delloginfo.log"
	'''

	数据无价,谨慎操作

	*:配置需要清除的目录,可配置多个.

	'''
	pathList =["/var/log"]
	delFileLog = []
	for path in pathList:
		for root, dirs, files in os.walk(path, topdown=False):
			for name in files:
				delFileLog.append('[{0}]&&[{1}]  clear file content.\n'.format(formatDateToStr(),os.path.join(root,name)))
				p = Path(os.path.join(root, name))
				p.write_text('')
	logW = Path(logPath)
	# 如果日志文件不存在,则新创建.
	if not logW.exists():
		logW.touch()
	# 日志文件大小.
	# 单位为整数M.
	logFileSize = logW.stat().st_size//1024//1024
	if logFileSize>=5:
		# 当日志文件大小超过5M时,清空日志文件内容.
		# 之后在写入.
		logW.write_text('')
	# 记录日志文件数据.
	with logW.open(mode='a') as f:
		f.write(''.join(delFileLog))

Linux 定时任务参考:

5 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,

以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]

30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]

25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]

*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]

30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]

每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件

50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]

Nginx:配置301跳转记录来源域名

问题

之前跳转了不少域名到博客(suancaiyu.xyz),全都是用的301,后来突发奇想.统计一下来源域名(这样之后就可以看到访客从哪个域名进来的),在网上找了一些资料,不得不说Nginx配置的有关资料有点少……

但最后还是搞定.

是这样的:

比如访问:07q.net
那么现在就会跳转到:www.bckf.cn/?source=07q.net

如果访问:www.07q.net
就会:www.bckf.cn/?source=www.07q.net

不必担心?问号的问题,我试了一下Nginx会自动转换.
比如访问:07q.net?a=px
会跳转到:www.bckf.cn/?a=px&source=07q.net

so,搞定.

Linux+Nginx+PHP+MySQL

源码

在Linux上面,只需要新建一个文本文件,把下面的配置贴进去即可.

server
	{
		listen       80;
		server_name www.123.net 123.net 123.com www.123.com;# 替换成自己的.
		rewrite ^/(.*) http://www.sina.com.cn/$1?source=$host permanent; # 替换成自己的.
		access_log off;
	}

另外,最近掉进了React全家桶,做了一个单页应用:可以访问youbian.xyz试用.