如何解决如何将纪元时间值转换为当地时间?
问题是如何在每一行中传递纪元时间的数值并转换为当地时间。
输入文件:log_data.csv
id: 535,epoch_time: 1611773844,nsecs: 158737495,state: 2,status: 1
id: 536,nsecs: 258731299,status: 1
id: 537,nsecs: 358585677,state: 4,status: 3
id: 538,nsecs: 458462033,status: 1
代码片段:
import datetime
def time(data):
fmt = "%Y-%m-%d %H:%M:%s"
t = datetime.datetime.fromtimestamp(float(s)/1000.)
print t.strftime(fmt)
def read_comlumn():
for line in open("log_cleaning_3_final.log"):
columns = line.split(',')
解决方法
您可以使用 csv
模块并从这里开始
import csv
import datetime
def convert(data):
fmt = "%Y-%m-%d %H:%M:%S"
t = datetime.datetime.fromtimestamp(float(data)/1000.)
return t.strftime(fmt)
with open('log_cleaning_3_final.log','r') as f:
csv_data = csv.reader(f)
csv_lines = list(csv_data)
for line in csv_lines:
line[1] = convert(line[1].split(':')[1].strip())
with open('log_cleaning_3_final.log','w') as f:
writer = csv.writer(f)
writer.writerows(csv_lines)
,
你从来没有真正说过你想用转换后的数据做什么——所以我猜到了,下面的代码把它写到一个名为 log_cleaning_3_final.log
的文件中。我还认为您没有提到您使用的是哪个版本的 Python,但我怀疑它是 2.x 并且已经编写了代码,因此它可以在该版本中运行。
from collections import OrderedDict as odict
import datetime
def time(data):
t = datetime.datetime.fromtimestamp(float(data)/1000.)
return t.strftime("%Y-%m-%d %H:%M:%S")
def read_columns(filename):
columns = []
with open(inp_filename) as inp:
for line in inp:
row = dict([map(str.strip,col.strip().split(':')) for col in line.split(',')])
row['epoch_time'] = time(row['epoch_time']) # Convert to local time.
columns.append(row)
return columns
def write_columns(cols,filename):
fieldnames = 'id epoch_time nsecs state status'.split()
with open(filename,'w') as outp:
for row in cols:
line = odict([(fieldname,row[fieldname]) for fieldname in fieldnames])
line = ','.join('{}: {}'.format(k,v) for k,v in line.items())
outp.write(line + '\n')
cols = read_columns("log_data.csv")
write_columns(cols,"log_cleaning_3_final.log")
print('done')
运行上面的log_cleaning_3_final.log
输出文件的内容:
id: 535,epoch_time: 1970-01-19 07:42:53,nsecs: 158737495,state: 2,status: 1
id: 536,nsecs: 258731299,status: 1
id: 537,nsecs: 358585677,state: 4,status: 3
id: 538,nsecs: 458462033,status: 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。