1. 苏葳的备忘录首页
  2. 编程

一个按文件名中的日期清分日志的Python小程序

python 日志维护的某中间业务平台按报文存储日志,每个报文都会产生一个日志文件,现在大约每天数千笔交易,导致在log目录下产生大量文件,由于aix平台的限制,在查找日志时经常出现列表过长(比如用ls –ltr PEW*_1221_*.log查看时)的错误,操作十分不便。现写如下小Python程序,将日志按天移入每天的目录中,如所有PEW*_1221_*.log移入20131221目录下,代码如下:

# -*- coding:utf-8 -*-
# 将PEW*_1221_*.log形式的日志移入20131221目录下,调用:python gb.py "PEW*_1221_*.log" 20131221 若20131221目录不存在会自动创建。
import getopt,sys,os,shutil,glob
def main():
	optlist,args=getopt.getopt(sys.argv[1:],'h',["help"])
	for o,a in optlist:
		if o in ("-h","--help"):
			print 'srcexpress dstdir'
			sys.exit()
	if len(args)<1:
		print 'srcexpress dstdir'
		sys.exit()
	print '0',args[0]
	print '1',args[1]
	if os.path.isfile(args[1]):
		print '目标路径',args[1],'是文件'
		sys.exit()
	if os.path.isdir(args[1]):
		nn=raw_input('确定把'+args[0]+'拷入'+args[1]+'目录下?[Y/N]')
		if nn.upper()=='Y':
			try:
				for filename in glob.glob(args[0]):
					print 'moving',filename
					shutil.move(filename,args[1])
			except IOError, e:
				print "failed because %s" % e
		else:
			sys.exit()
	else:
		nn=raw_input('确定把'+args[0]+'拷入'+args[1]+'目录下?[Y/N]')
		if nn.upper()=='Y':
			try:
				os.mkdir(args[1])
				for filename in glob.glob(args[0]):
					print 'moving',filename
					shutil.move(filename,args[1])
			except IOError, e:
				print "failed because %s" % e
		else:
			sys.exit()
if __name__=='__main__':
	main()

代码在RHEL5的python 2.7.3下编写测试,拷至aix 5.3下的python 2.5.4下直接运行成功,显示了python代码良好的跨平台性。

 

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/526.html

发表评论

邮箱地址不会被公开。 必填项已用*标注