在Ubuntu上打开.JSON文件失败

时间:2017-12-14 23:59:51

标签: python json python-3.x ubuntu

我有一个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上工作正常,但显然只是一种解决方法。

感谢您的帮助!

3 个答案:

答案 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