从数据文件中的行获取日期并在python中添加到新文件名

时间:2014-09-17 15:40:00

标签: python

我有一个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"

1 个答案:

答案 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)