Python Can';t使用我的本地json文件文本作为intiger 导入多处理 导入urllib.request 导入json 将open(“crypto.json”)作为f: data=json.loads(f) 结果=数据 打印(打印(结果)) resultbtc=int(结果['User']['BTC']) resultdash=int(结果['User']['DASH']) resulteth=int(结果['User']['ETH']) url=”https://min-api.cryptocompare.com/data/pricemulti?fsyms=ETH,破折号,BTC和tsyms=BTC,EUR和api_key=9A96785FB79DA776270B5FFC9E989D9092BBE23472E107301CE5FF8A82F3“ data=urllib.request.urlopen(url) html=data.read() html=html.decode() o=json.loads(html) btcv=o['BTC']['EUR'] dashv=o['DASH']['EUR'] ethv=o['ETH']['EUR'] fresbtc=btcv*resultbtc['BTC'] fresdash=dashv*resultdash['DASH'] freseth=ethv*resulteth['ETH'] 打印(“Бχρήστης”、结果['Name']、“εχει”、fresbtc、“€σε比特币”、freseth、“€σε以太坊”、fresdash、€σεDASH”)
JSON文件:Python Can';t使用我的本地json文件文本作为intiger 导入多处理 导入urllib.request 导入json 将open(“crypto.json”)作为f: data=json.loads(f) 结果=数据 打印(打印(结果)) resultbtc=int(结果['User']['BTC']) resultdash=int(结果['User']['DASH']) resulteth=int(结果['User']['ETH']) url=”https://min-api.cryptocompare.com/data/pricemulti?fsyms=ETH,破折号,BTC和tsyms=BTC,EUR和api_key=9A96785FB79DA776270B5FFC9E989D9092BBE23472E107301CE5FF8A82F3“ data=urllib.request.urlopen(url) html=data.read() html=html.decode() o=json.loads(html) btcv=o['BTC']['EUR'] dashv=o['DASH']['EUR'] ethv=o['ETH']['EUR'] fresbtc=btcv*resultbtc['BTC'] fresdash=dashv*resultdash['DASH'] freseth=ethv*resulteth['ETH'] 打印(“Бχρήστης”、结果['Name']、“εχει”、fresbtc、“€σε比特币”、freseth、“€σε以太坊”、fresdash、€σεDASH”),python,json,python-3.x,Python,Json,Python 3.x,JSON文件: [ { “姓名”:“Jonh Smith”, “BTC”:“23”, “ETH”:“345”, “破折号”:“1045” } ] 我想提取BTC、ETH和DASH的值,并将它们用作整数,以便能够用实时数据打印它们的值,但我得到了这个错误 回溯(最近一次呼叫最后一次): 文件“C:\UniPapei\ΕισαγωγηστηεπιστηεπττητωⅤ∧ογιστων\New folder\Εργ4\bitconerg.py”,第20行,在 data=json.loads(f) 文
[
{
“姓名”:“Jonh Smith”,
“BTC”:“23”,
“ETH”:“345”,
“破折号”:“1045”
}
]
我想提取BTC
、ETH
和DASH
的值,并将它们用作整数,以便能够用实时数据打印它们的值,但我得到了这个错误
回溯(最近一次呼叫最后一次):
文件“C:\UniPapei\ΕισαγωγηστηεπιστηεπττητωⅤ∧ογιστων\New folder\Εργ4\bitconerg.py”,第20行,在
data=json.loads(f)
文件“C:\Users\Argyris\AppData\Local\Programs\Python\Python39\lib\json\u init\u.py”,第339行,在loads中
raise TypeError(f'JSON对象必须是str、bytes或bytearray,'
TypeError:JSON对象必须是str、bytes或bytearray,而不是TextIOWrapper
问题是您试图对文件句柄而不是文件内容执行加载。读取文件内容并将其传递给json.loads() json.load()不接受文件对象。请改用json.load()
顺便说一句,你的JSON值不是JSON数字,而是JSON字符串。Python会将它们反序列化为
str
对象,而不是int
对象。请参阅:为什么不直接使用JSON.load
?@juanpa.arrivillaga你的建议是一种更好的方法,我会编辑答案。谢谢你,它成功了为什么不直接使用JSON.load
?
with open("crypto.json") as f:
data = json.loads(f.read())
result = data
print(type(result))
with open("crypto.json") as f:
data = json.load(f)
result = data