2017-12-14 6 views
0

bokehライブラリを使用してGMapPlotのgoogle mapsプロットを表示するPythonアプリケーションがあります。 GMapOptionsでマップスタイルを変更するには、./map/styles.JSONにローカルに保存されているthis .JSONファイルを読み込み、それを文字列に変換しています。 Win10では、これは私はUbuntuのサーバ上でアプリケーションを実行しているときにエラーが新しいエラーが Ubuntuで.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()メソッドをうまく動作させようとしました。

Pythonスクリプト内で.JSONデータを文字列として含む変数を宣言すると、Win10とUbuntuでは正常に動作しますが、明らかに回避策に過ぎません。

ありがとうございました!

+1

UbuntuサーバがPython 3.xを実行していますか? –

+0

Python 2.xで実行しています。 ':codecsをインポートすることを忘れないでください。':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変換>>のUnix(LF)

0

のPython 3は、open()ためencodingキーワードを持っていますが、Pythonの2にはありません。

Python 3でスクリプトを実行するように設計されていることを確認する必要があります。多くのサーバーでは、pythonは常にPython 2を指し、Python 3バイナリはpython3と呼ばれます。

関連する問題