我有一个python脚本,在从日志工具中纠正一些错误的格式后读取和写入一个新文件。
日志文件中的每一行都是一条新记录,我希望能够从行数据的前19个字符中提取数据,然后附加到新文件名的末尾。
行数据的开头看起来像0 20140617191307240
,其中0
是新记录的开头,然后以日期部分20140617191307240
开头,其日期时间格式为YYYYMMDDHHMMSSmmm
所以我想提取yyyy-mm-dd
,然后追加到新文件名的末尾,如此
当前文件名
4222124650669009.archive
写完后
4222124650669009.archive.new.2014-06-17
我不确定如何正确处理它,我的python脚本如下
#!/usr/bin/python
from sys import argv
import os
script, filename = argv
print "Starting Processing"
newfilename = filename + ".new"
print " Old Filename : %r" % filename
print " New Filename : %r" % newfilename
print " Rebuild Starting"
source = open(filename, 'r')
target = open(newfilename, 'w')
data = False;
for line in source:
if line[0:5] == '0 201' and data :
target.write('\n' + line.strip().replace('\r',' ').replace('\t',' '))
# print " " + line[0:132]
else :
target.write(line.strip().replace('\r',' ').replace('\t',' '))
# print "+" + line[0:132]
data = True,
if data :
target.write('\n')
source.close();
target.close();
print "Finished Processing"
答案 0 :(得分:0)
阅读示例20140617191307240
中的日期字符串。
将其转换为您需要添加到新文件名的格式。
然后使用os.rename
重命名该文件。
>>> a = '20140617191307240'
>>> file = '4222124650669009.archive'
>>> to_date = datetime.datetime.strptime(a,"%Y%m%d%H%M%S%f").strftime('%Y-%m-%d')
>>> new_file_name = file + '.new.' + to_date
>>> new_file_name
'4222124650669009.archive.new.2014-06-17'
>>> os.rename(file,new_file_name)