2017-12-14 1 views
0

bokeh 라이브러리를 사용하여 GMapPlot과 함께 Google지도 플롯을 표시하는 Python 응용 프로그램이 있습니다. GMapOptions으로 맵 스타일을 변경하려면 ./map/styles.JSON에 로컬로 저장되어있는 .JSON 파일을 읽고 문자열로 변환하십시오. Win10에이 내가 우분투 서버에서 응용 프로그램을 실행하고있을 때 오류가 새로운 오류가 우분투에서 .JSON 파일 열기 실패

ValueError: expected JSON text, got '\xef\xbb\xbf[... 
..."#dadada"\r\n   }\r\n  ]\r\n }\r\n]' 

를 발생 인코딩 문없이
Traceback (most recent call last): 
File "photo_map.py", line 22, in <module> 
with open(r"./map/styles.JSON", encoding='utf-8-sig') as file: 
TypeError: 'encoding' is an invalid keyword argument for this function 

을 발생하지만

with open(r"./map/styles.JSON", encoding='utf-8-sig') as file: 
    styles = file.read().splitlines() 
styles="".join(styles) 

, 함께 잘 작동

나는 또한 json 모듈과 decode() 메소드를 아무런 성공없이 사용하려고 노력했다.

문자열로 .JSON 데이터가 들어있는 파이썬 스크립트 내에서 변수를 선언하면 Win10 및 Ubuntu에서 제대로 작동하지만 분명히 해결 방법 일뿐입니다.

도움 주셔서 감사합니다.

+1

우분투 서버가 파이썬 3.x를 실행하고 있습니까? –

+0

Python 2.x에서 실행하고 있습니다. '코덱 가져 오기'를 잊지 마라. : codecs.open ("./ map/styles.JSON", "utf-8")을 file : ...'으로 사용해 보라. – zwer

답변

0

는이

with open("./map/styles.JSON", "rb") as file: 
    styles = file.read().decode("utf-8-sig").splitlines() 
0

내가 최근에 비슷한 문제가 있었다 및 JSON 파일을 확인 https://jsonlint.com/을 사용하십시오. 문제 : Windows에서 Linux가 사용하지 않는 EOL (end of line) 문자를 제공했습니다. 솔루션 : 나는 메뉴에서 메모장에서 파일 ++ 열 - 편집 >> EOL 변환 >> 유닉스 (LF)

0

파이썬 3 open()에 대한 encoding 키워드를 가지고가 있지만, 파이썬이되지 않습니다.

대개 Python 3에서 스크립트를 디자인했는지 확인해야합니다. 많은 서버에서 python은 항상 Python 2를 가리키며 Python 3 바이너리는 python3입니다.