파이썬으로 시리얼 통신하려는데 실시간 입출력에 문제가 있습니다.
import serial

serial_port = 'COM3'
baud_rate = 9600
ser = serial.Serial(serial_port, baud_rate, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=0)
output_file = open('output.txt', 'a')

while True:
    if ser.inWaiting() > 0:
        output_file.write(ser.readline().decode('ascii'))
        output_file.close()                         

안녕하세요. 파린이입니다.

시리얼 통신으로 실시간으로 데이터를 받으려 하는데 file.close()명령어를 사용하면
value error:i/o operation on closed file에러가 뜹니다.

몇시간동안 이것 저것 해봤는데 안되네요ㅠ 도와주시면 감사드리겠습니다. ㅠ

코드는 아래와 같습니다.

pykwon 1371

M 2020년 12월 11일 7:11 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

output_file.close()로 파일객체가 이미 닫힌 상태에서 다시 output_file.write가 호출되기 때문에 발생한 오류로 보입니다.
output_file.close()은 while 문 바깥쪽에 정의되어야 하지 않을까요?

박응용

2020년 12월 11일 8:56 오후

감사합니다. - pykwon님, 2020년 12월 12일 9:01 오전 추천 , 대댓글