라즈베리파이에서 사진 캡쳐 후 저장하는 코드를 짰는데 넘버링을 하고 싶습니다.

조회수 333회
StartTime = time.time()
LastTime = 0
for i in range (1) :
 while True :
    #[Do if there is Data to Process.]
  Length = Serial_PC_Justin.inWaiting()
  if Length == 0:

   continue
  data = Serial_PC_Justin.read(Length)
  File_Justin = open("LogData%s.jpg"%i,"ab")
  File_Justin.write(data)
  File_Justin.close()
  TotalLength += Length

    #[Print Periodically.]
  TimePassed = time.time() - StartTime
  if TimePassed > LastTime + 1:
   print(f"Total Length: {TotalLength} bytes")
   print(f"Average Speed: {TotalLength / (1024 ** 2 * TimePassed)} MB/s")
Serial_PC_Justin.close()   #[Close the Port.]

사진을 LogData.jpg로 저장하는데 코드 돌릴때 마다 넘버링을 하고 싶습니다.

예를 들면 LogData1.jpg,LogData2.jpg, ...

지금은 계속 한파일에만 덮어쓰네요.

1 답변

  • for i in range (1) : 루프는 삭제하시고, 대신 이렇게 써보세요.

    import datetime
    
    file_dt = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    File_Justin = open("LogData%s.jpg"%file_dt, "ab")
    

    그러면 대충 LogData20230103162241.jpg, LogData20230103162242.jpg, ... 하는 식으로 파일명이 만들어질 겁니다.

    실 사용 시나리오를 보자면 1부터 시작하는 일련번호보다는 타임스탬프가 나을 거 같아서, 이쪽을 추천 드립니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)