1

EXCEL から生成されたファイルを基本的に削除する Python スクリプトを作成しました.csv(実際には OpenOffice の亜種ですが、基本的には同じものです)。

.csvライトのタイミングが含まれます。1 つのデータ セットにはライト オンが含まれ、もう 1 つのデータ セットにはライト オフが含まれます。両方の時間を取り、それらを変換し、ライトが点灯していた合計時間を教えてくれる減算問題を吐き出すスクリプトを作成しようとしています。

キッカーは、ライトが 08:00 にオンになり、翌朝 01:00 にオフになることがあります。私のスクリプトは、データセットでこれが初めて発生する前にすべての処理を正常に実行し、問題が発生するとすぐに終了します。

2 番目の質問: 私のコードの設定方法では、日時の数字の最初の 3 つの数字が によって年間通算日に割り当てられ%jます。値が 365 を超えると、これは機能しなくなりますか? 代替手段は何ですか?

私が得るエラー:

Traceback (most recent call last):
  File "D:\Documents\Programming\Python scripts\Actually useful\excel_strip.py", line 55, in <module>
    print(datetime.strptime(offlst[idx], '%j%H%M'))
  File "C:\Python27\lib\_strptime.py", line 328, in _strptime
    data_string[found.end():])
ValueError: unconverted data remains: 8

以下は問題のコードです。横にコメントのある行が該当部分です。

import csv
from datetime import datetime

inc = 0
inc2 = 0
inc3 = 0
inc4 = 0
inc5 = 1
inc6 = 1
inc7 = 0
datelst = []
templst = []
onlst = []
offlst = []
time_diff = []
waterlst = []

path = raw_input("Enter the pathname for your .csv file. (e.g. C:\Myfolder\myfile.csv: ")

out = open(path, 'rb')
data = csv.reader(out)
data = [row for row in data]

for row in data:
    if row[inc].startswith('DATE'):
        loadlist = row[inc + 1]
        datestr = loadlist[:10]
        datelst.append(datestr)
    elif row[inc2].startswith('TEMP'):
        tempstr = row[inc2 + 1]
        templst.append(tempstr)
    elif row[inc3].startswith('LIGHT ON'): #This block takes the light on times and writes them all to a list with padding for a day value
        onstr = row[inc3 + 1]
        if onstr != 'N/A':
            onlst.append(format(inc5, '03d') + onstr)
            inc5+=1
        else:
            onlst.append(onstr)
            inc5+=1
    elif row[inc4].startswith('LIGHT OFF'): #Same as above for light off times
        offstr = row[inc4 + 1]
        if offstr != 'N/A':
            offlst.append(format(inc6, '03d') + offstr)
            inc6+=1
        else:
            offlst.append(offstr)
            inc6+=1
    elif row[inc7].startswith('H2O AMNT (mL)'):
        waterstr = row[inc7 + 1]
        waterlst.append(waterstr)

for idx, val in enumerate(onlst): #The following block tries to iterate over the list to make times that can be subtracted by one another.
    if onlst[idx] != 'N/A':
        print(datetime.strptime(onlst[idx], '%j%H%M'))
        print(datetime.strptime(offlst[idx], '%j%H%M'))
        light_on = datetime.strptime(onlst[idx], '%j%H%M')
        light_off = datetime.strptime(offlst[idx], '%j%H%M')
        time_diff.append(str(light_off - light_on))
    else:
        time_diff.append('N/A')

for idx, val in enumerate(time_diff):
    if time_diff[idx].startswith('-'):
        loadlist2 = time_diff[idx]
        timestring = loadlist2[8:]
        time_diff[idx] = timestring

out = open('newlog.csv','wb')
output = csv.writer(out)
output.writerow(datelst)
output.writerow(templst)
output.writerow(time_diff)
output.writerow(waterlst)
out.close()
4

0 に答える 0