秒で各行にデルタ時間を追加し、以下の解決しようとして:Pythonのテキストファイルの操作は、私のpythonの初心者です
を私はそれぞれの行は次のように起動し、テキストファイルがあります。
<18:12:53.972>
<18:12:53.975>
<18:12:53.975>
<18:12:53.975>
<18:12:54.008>
を
など
上記の代わりに、行の先頭に「<」という文字列がある場合にのみ、経過時間を秒単位で追加したいと考えています。など
<0.0><18:12:53.972>
<0.003><18:12:53.975>
<0.003><18:12:53.975>
<0.003><18:12:53.975>
<0.036><18:12:54.008>
ここ
#import datetime
from datetime import timedelta
from sys import argv
#get filename as argument
run, input, output = argv
#get number of lines for textfile
nr_of_lines = sum(1 for line in open(input))
#read in file
f = open(input)
lines = f.readlines()
f.close
#declarations
do_once = True
time = []
delta_to_list = []
i = 0
#read in and translate all timevalues from logfile to delta time.
while i < nr_of_lines:
i += 1
if lines[i-1].startswith('<'):
get_lines = lines[i-1] #get one line
get_time = (get_lines[1:13]) #get the time from that line
h = int(get_time[0:2])
m = int(get_time[3:5])
s = int(get_time[6:8])
ms = int(get_time[9:13])
time = timedelta(hours = h, minutes = m, seconds = s, microseconds = 0, milliseconds = ms)
sec_time = time.seconds + (ms/1000)
if do_once:
start_value = sec_time
do_once = False
delta = float("{0:.3f}".format(sec_time - start_value))
delta_to_list.append(delta)
#write back values to logfile.
k=0
s = str(delta_to_list[k])
with open(output, 'w') as out_file:
with open(input, 'r') as in_file:
for line in in_file:
if line.startswith('<'):
s = str(delta_to_list[k])
out_file.write("<" + s + ">" + line)
else:
out_file.write(line)
k += 1
:-)試みは、それが今であるので、それがうまく動作しますが、最後の2行は、新しいファイルに書かれていませんしています。それは言う:「のS = strの(delta_to_list [K])はIndexError:リストインデックスを範囲外
最初に私は私のコードは、改善のための提案を働いて、第二取得したいと思いありがとう
これまでに何を試しましたか? –
これはpythonで可能ですか?はい – e4c5
もちろん可能です。実際、それはかなり簡単です。 datetimeモジュール – Chaker