【发布时间】:2013-06-01 04:05:09
【问题描述】:
我正在尝试用 Python 编写一个程序:
- 将 .csv 文件作为输入
- 读取第二行的时间戳
- 将每个时间戳之间的时间差打印为 ms
当我在变量中写入时间戳时,代码可以工作,但是当我尝试使用文件作为输入时没有任何反应。程序运行,但没有任何内容打印到控制台。
这就是代码的样子:
import csv
import datetime
from Tkinter import Tk
from tkFileDialog import askopenfilename
Tk().withdraw()
toopen = askopenfilename(filetypes=[("Text file","*.txt")])
with open(toopen, 'rb') as f:
reader = csv.reader(f, delimiter='\t')
for row in reader:
code = row[0]
times = row[1].split()
times = [datetime.datetime.strptime(x, "%H:%M:%S.%f") for x in times]
for i in range(len(times) - 1):
delta = times[i + 1] - times[i]
print ((delta.days * 24 * 60 * 60 + delta.seconds) * 1000 + delta.microseconds / 1000)
这是我的输入文件的外观示例。
input23 13:13:05.674430
input47 13:13:06.623822
input52 13:13:07.573215
input66 13:13:08.522607
感谢任何帮助,因为我真的被困在这里! 谢谢
【问题讨论】:
-
如果什么也没打印,那么你可能打开了一个空文件。
-
我重新检查了文件,遗憾的是,不是问题。
-
也许
row[1]里面只有 一个 时间戳,没有空格?如果没有样本输入,这是无法判断的。您的代码看起来是正确的。 -
为什么要打开二进制文件?
-
添加了我的输入文件的示例。我尝试打开没有二进制文件的文件,但没有效果。