1
    import multiprocessing
    import urllib.request
    import json
    
    with open("crypto.json") as f:
        data = json.loads(f)
        result = data
    
    print(type(result))
    
    
    resultbtc = int(result['User']['BTC'])
    resultdash = int(result['User']['DASH'])
    resulteth = int(result['User']['ETH'])
    
    url = "https://min-api.cryptocompare.com/data/pricemulti?fsyms=ETH,DASH,BTC&tsyms=BTC,EUR& api_key=9a96785fb79da776270b5ffc9e989d9092bbe24d23472e107301cec5ff8a82f3"
    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']
    
    
    
    print ("Ο χρήστης",result['Name'],"εχει",fresbtc,"€ σε BITCOIN",freseth,"€ σε ETHEREUM",fresdash,"€ σε DASH")

JSON文件:

[
 {
    "Name" : "Jonh Smith",
    "BTC" : "23",
    "ETH" : "345",
    "DASH" : "1045"
 }
]

我想提取 的值BTCETH并将DASH它们用作整数,以便能够使用实时数据打印它们的值,但我收到此错误

回溯(最近一次通话最后):文件“C:\UniPapei\Εισαγωγη στην επιστημη των υπολογιστων\New folder\Εργ 4\bitcoinerg.py”,第 20 行,数据 = json.loads(f) 文件“C:\Users \Argyris\AppData\Local\Programs\Python\Python39\lib\json_ init _.py",第 339 行,加载中引发 TypeError(f'JSON 对象必须是 str、bytes 或 bytearray,'TypeError:JSON 对象必须是 str、bytes 或 bytearray,而不是 TextIOWrapper

4

2 回答 2

1

问题是您试图在文件句柄上执行加载,而不是文件的内容。读取文件的内容并将其传递给 json.loads()


with open("crypto.json") as f:
    data = json.loads(f.read())
    result = data

print(type(result))
于 2021-02-02T17:59:24.500 回答
1

json.loads() 不接受文件对象。而是使用 json.load()

with open("crypto.json") as f:
    data = json.load(f)
    result = data
于 2021-02-02T18:06:44.820 回答