【发布时间】:2015-05-01 02:32:54
【问题描述】:
我是 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 文件,并将 whenCreated 和 pwdLastSet 字段更改为人类可读的格式。任何意见,将不胜感激。请注意,本例中有 5 列 3 行,第一行是列标题。
所以放轻松,因为这是我编写的第一个 python 脚本。但任何建议、cmets、最佳实践将不胜感激。
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()
【问题讨论】:
-
你能把你写的东西贴出来吗?如果您还没有写任何东西,作为提示,请从 CSV 模块开始。
-
将您在 cmets 中的代码放入问题中。它会帮助别人帮助你。
标签: python csv active-directory largenumber