from datetime import datetime,time
from csv import reader
with open('onlyOnce.txt', 'r+') as fonlyOnce:
for f_time, sec_time, dte in filter(None, reader(fonlyOnce, delimiter="_")):
check_stime=f_time.split(":")
Stask_hour=check_stime[0]
Stask_minutes=check_stime[1]
check_stime = datetime.strptime(f_time,"%H:%m").time()
check_etime=sec_time.split(":")
Etask_hour=check_etime[0]
Etask_minutes=check_etime[1]
#check every minute if current information = desired information
now = datetime.now()
now_time = now.time()
date_now = now.date()
if (date_now.strftime("%Y-%m-%d") == dte and time(int(Stask_hour),int(Stask_minutes)) <= now_time <= time(int(Etask_hour),int(Etask_minutes))):
print("this line in range time: "+ f_time)
#delete this line
fonlyOnce.write(" ")
else:
print("Padraic Cunningham")
fonlyOnce.close()
此代碼的目標是:
1-對文件中的行循環
2-檢查,如果任何線在它的範圍內當前時間
3-如果是:打印this line in range time: 9:1
並從同一文件中刪除此行。
4-文件中的數據是:
7:1_8:35_2016-04-14
8:1_9:35_2016-04-14
9:1_10:35_2016-04-14
5-輸出必須是:
7:1_8:35_2016-04-14
8:1_9:35_2016-04-14
因爲最後行有電流time.it的範圍時必須刪除和替換空行。
我的問題是這樣的代碼將清理所有的文件,我不希望出現這種情況:
invaild代碼:fonlyOnce.write(" ")
感謝
你有一個縮進問題,在fonlyOnce的開始處缺少一個空格....已編輯它。 – tfv
我認爲你已經完成了這個工作,試圖在原地進行。你有沒有試過寫出你想保留的臨時文件,然後用臨時文件替換原始文件? – SpoonMeiser
[從Python中的大文件中刪除行的最快方法]的可能重複(http://stackoverflow.com/questions/2329417/fastest-way-to-delete-a-line-from-large-file-in-蟒蛇) – martijnn2008