我在python中加载用户和密码的json文件时遇到问题,从其余api中检索数据,后者使用身份验证从url中提取json数据。
当我将用户,密码和uri放在json文件中并运行脚本时,它在json库中给出了这个错误:
Traceback (most recent call last):
File "C:/Python27/Script.py", line 10, in <module>
config = json.load(config_file)
File "C:\Python27\lib\json\__init__.py", line 290, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Python27\lib\json\__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "C:\Python27\lib\json\decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python27\lib\json\decoder.py", line 380, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Invalid \escape: line 7 column 42 (char 270)
这是代码:
import urllib2
import json
#Load the config file
with open('Config.json') as config_file :
config = json.load(config_file)
# Load your username from the config file
user = config['user']
# Load your password from the config file
password = config['password']
enter code here
从中加载样本的json文件位于:
{
"user" : "api",
"password" : "admin1234",
"uri": "https://datafeeds.emailsecurity.com/test",
"resetUri": "https://datafeeds.emailsecurity.com/test/test?reset=2017-07-01T00:00:00Z",
"files" : {
"cookiesFilePath" : "C:\\abc",
"logsFilePath" : "C:\\abc",
}
}
答案 0 :(得分:1)
问题是其他人所说的双反斜杠。 您想转义两个反斜杠,例如:
bad_str = '{"a" : "C:\\ b"}'
good_str = '{"a" : "C:\\\\ b"}'
#JSONDecodeError
print(json.loads(bad_str))
# OK
print(json.loads(good_str))
答案 1 :(得分:0)
数据文件包含无效的json:
>>> json.loads('{"cookiesFilePath": "C:\\abc"}')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
ValueError: Invalid \escape: line 1 column 24 (char 23)
问题是"c:\\abc"
字符串。 json解码器将双反斜杠解释为转义的单反斜杠,使冒号'\a'
后面的字符变为无效的json。
使用标准python json编码器在您的示例中生成json是不可能的:
>>> json.dumps({"cookiesFilePath": "C:\abc"})
'{"cookiesFilePath": "C:\\u0007bc"}'
>>> json.dumps({"cookiesFilePath": "C:\\abc"})
'{"cookiesFilePath": "C:\\\\abc"}'
表示文件中的json是使用损坏的工具创建的,或者是手动编辑的。
答案 2 :(得分:0)
{
"user" : "api",
"password" : "admin1234",
"uri": "https://datafeeds.emailsecurity.com/test",
"resetUri": "https://datafeeds.emailsecurity.com/test/test?reset=2017-07-01T00:00:00Z",
"files" : {
"cookiesFilePath" : "C:\\abc",
"logsFilePath" : "C:\\abc"
}
}
在json文件中尝试不使用逗号。
带逗号:
"logsFilePath" : "C:\\abc",
结尾没有逗号:
"logsFilePath" : "C:\\abc"