Python 3读取逗号分隔CSV文件操纵变量并写出CSV

时间:2015-05-01 02:32:54

标签: python csv active-directory largenumber

我是Python新手,希望使用下面列出的内容读取CSV文件:

DN, whenCreated, name, pwdLastSet, location
"CN=Jackson2,OU=Domain Controllers,DC=one,DC=onecity,DC=net",20100623145323.0Z,Jackson8,1.30745E+17,Japan,
"CN=Jackson4,OU=Prod,OU=Windows 2014 Servers,OU=STE,DC=one,DC=onecity,DC=net",20041208192730.0Z,Jackson7,1.30735E+17,Aussie,

此CSV文件长达数千行,我想将所有字段输出到新的CSV文件,并将whenCreatedpwdLastSet字段更改为人类可读的格式。任何意见,将不胜感激。请注意,在此示例中,有5列包含3行,第一行是列标题。

所以请放轻松,因为这是我写过的第一个python脚本。但任何建议,意见,最佳实践将不胜感激。

    import csv
    import sys
    import time
    from datetime import datetime

    def adTimestampToUnix(ad):
        #Convert an 18-digit Windows NT timestamp to a UNIX timestamp
        return int(((ad / 10000000) - 11644473600))
    import datetime

    file = open("source.csv", 'rt')
    fileWrite = open("target.csv", 'w', newline='')
    try:
        csvFile = csv.reader(file)
        csvWrite = csv.writer(fileWrite, dialect='excel')
        for row in csvFile:
            csvWrite.writerow(row)
            for row in csvFile:
                whenCreated = row[1]
                year = whenCreated[:4]
                month = whenCreated[4:6]
                day = whenCreated[6:8]
                hour = whenCreated[8:10]
                minute = whenCreated[10:12]
                seconds = whenCreated[12:14]
                whenCreated =(month+"/"+day+"/"+year+" "+hour+":"+minute+":"+seconds)
                pwdLastSet = int(row[3])
                pwdLastSet = adTimestampToUnix(pwdLastSet)
                if pwdLastSet < 1:
                    pwdLastSet = ""
                else:
                    pwdLastSet = datetime.datetime.utcfromtimestamp(pwdLastSet).strftime('%Y-%m-%d %H:%M:%S')
                row = (row[0],whenCreated,row[2],pwdLastSet,row[4])
                csvWrite.writerow(row)
    finally:
        file.close()

0 个答案:

没有答案