Возникают проблемы при создании txt.file каждый раз, когда я запускаю свой код Python. Предполагается, что код собирает данные в течение довольно долгого времени, но всякий раз, когда я называю txt.file текущим временем в часах и минутах (например, 12:00), скрипт будет создавать новый файл каждый раз, когда часы доходят до следующей минуты. (например, 12:01) во время работы кода. В любом случае, чтобы предотвратить это?
Код:
import sys
sys.path.append('../../')
import time
import datetime
from DFRobot_BMX160 import BMX160
bmx = BMX160(1)
while not bmx.begin():
time.sleep(2)
def main():
while True:
data= bmx.get_all_data()
moment = time.strftime("%d-%m-%Y",time.localtime())
file = open('IMU ' + moment + '.txt', "a")
file.write(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S.%f")[:-3] + " ")
file.write("magnetometer {0:.2f} uT {1:.2f} uT {2:.2f} uT".format(data[0],data[1],data[2]) + "\n")
file.write(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S.%f")[:-3] + " ")
file.write("gyroscope {0:.2f} g {1:.2f} g {2:.2f} g".format(data[3],data[4],data[5]) + "\n")
file.write(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S.%f")[:-3] + " ")
file.write("accelerometer {0:.2f} m/s^2 {1:.2f} m/s^2 {2:.2f} m/s^2".format(data[6],data[7],data[8]) + "\n")
if __name__ == "__main__":
main()
Решение проблемы
Кажется, это потому, что вы переопределяете moment
каждый раз, когда код зацикливается в бесконечном цикле while.
file = open('IMU ' + moment + '.txt', "a")
будет создавать новый файл каждый раз, когда файл, который вы называете, не существует, и, поскольку moment
это текущее время, это будет происходить всякий раз, когда часы пробьют новую минуту.
Чтобы избежать этого, рассмотрите возможность определения moment
вне цикла while, если вы хотите регистрировать только один файл при запуске кода, или использовать условия if для установки, когда вы хотите создать новый файл.
Кроме того, поскольку вы открываете, но никогда не закрываете свои файлы, если вы запускаете этот скрипт достаточно долго, могут возникнуть проблемы со многими открытыми файлами. Лучше всего явно закрывать файлы, когда вы закончите с ними (см. здесь: Требуется ли close() при использовании итератора в файловом объекте Python ). И поскольку у вас нет явного условия выхода в вашем цикле, вы можете добавить break
условие или что-то подобное, которое закроет ваш файл журнала в случае сбоя или прерывания программы с помощью клавиатуры, так как это лучший способ убедитесь, что вы надежно сохраняете свои данные.
Комментариев нет:
Отправить комментарий