我有一个python应用程序,它使用散景库来显示带有GMapPlot的谷歌地图。为了使用GMapOptions更改地图样式,我正在阅读本地存储在./map/styles.JSON并将其转换为字符串的this .JSON文件。在Win10上,这可以正常使用
with open(r"./map/styles.JSON", encoding='utf-8-sig') as file:
styles = file.read().splitlines()
styles="".join(styles)
但是,当我在Ubuntu服务器上运行应用程序时,会出现错误
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
如果没有编码语句,则会引发新错误
ValueError: expected JSON text, got '\xef\xbb\xbf[...
..."#dadada"\r\n }\r\n ]\r\n }\r\n]'
我还尝试使用json模块和decode()方法,但没有成功。
在我的python脚本中声明包含.JSON数据作为字符串的变量在Win10和Ubuntu上工作正常,但显然只是一种解决方法。
感谢您的帮助!
答案 0 :(得分:0)
试试这个
with open("./map/styles.JSON", "rb") as file:
styles = file.read().decode("utf-8-sig").splitlines()
答案 1 :(得分:0)
我最近遇到了类似的问题,并使用https://jsonlint.com/来验证json文件。 问题:Windows给出了linux不使用的文件EOL(行尾)字符。 解决方案:我在菜单中打开了Notepad ++中的文件 - 编辑&gt;&gt; EOL转换&gt;&gt; Unix(LF)
答案 2 :(得分:0)
Python 3具有encoding
的{{1}}关键字,但Python 2没有。{/ p>
您可能需要确保在Python 3中执行该脚本,如果它是为其设计的。在许多服务器上,open()
始终引用Python 2,Python 3二进制文件称为python
。