server에서 실시간으로 임의의 값들을 보내는데
socket.send(str([[0,0,1,0,0],[1,0,0,0,0],[0,1,0,0,0]]).encode())
이런 형식으로 보냅니다. 이 데이터를 client에서 받아서 0이면 OFF, 1이면 ON으로 처리하려고 하는데, (처리는 list[0]에 해당하는 값으로 OFF,OFF,ON,OFF,OFF / list[1]은 ON,OFF,OFF,OFF 이렇게 client에서 분류합니다.)
client에서 받아지는 건 잘 받아집니다.
문제는, client는 PyQt5로 만들어 져 있는데, (화면이 좀 많습니다. 약 30개 정도 뭐 그렇다고 한 번에 다 키는건 아닙니다.) client에서 받을 때 정말 간혹 약 1시간에 1번 꼴로
<>:1: SyntaxWarning: list indices must be integers or slices, not tuple; perhaps you missed a comma? <>:1: SyntaxWarning: list indices must be integers or slices, not tuple; perhaps you missed a comma? :1: SyntaxWarning: list indices must be integers or slices, not tuple; perhaps you missed a comma?
이런 에러가 뜹니다.
더 큰 문제는 이게 왜 뜨는지는 알았는데 해결하는 방법을 모르겠습니다.
이 에러는
Data = [[1,2,3,4],[5,6,7,8]][[1,2,3,4],[5,6,7,8]]
이렇게 하면 나오는데, list가 ,
없이 들어가서 생기는 문제인것 같습니다. (에러 문구에도 comma가 나오죠..)
저는 이렇게 생각을 해 보았습니다.
- 콤마가 없다는 것은 server에서 너무 빨리 보내서 두 개가 들어온 것으로 처리가 되는 것인지.
- 혹은 client에서 받아놓고 Data에 값을 넣는 과정이 느려져서 그 사이에 받아온 데이터 까지 같이 처리가 되는 것인지...
신기한 것은 위 처럼 코딩을 하면 에러가 나서 진행을 못 하는데 try - except로 감싸면 에러 문구는 뜨는데 이후 코딩을 진행할 수 있습니다.
try - except로 감싸고 난 Data를 확인하면 tuple로 자동으로 들어가 있는데....
try - except를 사용하지 않고 tuple로 만들어 버릴 수 있는 것 혹은 Data에 콤마 없이 리스트가 받아지지 않게 하는 것 중에 해법이 존재할지 궁금합니다.
p.s. server에서 무한루프 돌듯이 계속 데이터를 send합니다. (1초에 약 20번? 정도 보내는 것 같더군요), server도 PyQt5로 만들어져 있습니다.