在python中添加json文件

问题描述 投票:0回答:1

我正在尝试在python中附加一些json文件。我有以下代码。好像是对的但是,我得到一个错误。

代码如下。

import pandas as pd

df1=pd.DataFrame()
for i in range(0,49):
    df = pd.read_json ('/media/michael/extHDD/Kaggle/DeepFAke/DF_all/metadata{}.json'.format(i))
    df1.append(df.T)

错误如下。

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-76-ddb355627155> in <module>
      3 df1=pd.DataFrame()
      4 for i in range(0,49):
----> 5     df = pd.read_json ('/media/michael/extHDD/Kaggle/DeepFAke/DF_all/metadata{}.json'.format(i))
      6     df1.append(df.T)

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in read_json(path_or_buf, orient, typ, dtype, convert_axes, convert_dates, keep_default_dates, numpy, precise_float, date_unit, encoding, lines, chunksize, compression)
    590         return json_reader
    591 
--> 592     result = json_reader.read()
    593     if should_close:
    594         try:

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in read(self)
    715             obj = self._get_object_parser(self._combine_lines(data.split("\n")))
    716         else:
--> 717             obj = self._get_object_parser(self.data)
    718         self.close()
    719         return obj

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in _get_object_parser(self, json)
    737         obj = None
    738         if typ == "frame":
--> 739             obj = FrameParser(json, **kwargs).parse()
    740 
    741         if typ == "series" or obj is None:

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in parse(self)
    847 
    848         else:
--> 849             self._parse_no_numpy()
    850 
    851         if self.obj is None:

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in _parse_no_numpy(self)
   1091         if orient == "columns":
   1092             self.obj = DataFrame(
-> 1093                 loads(json, precise_float=self.precise_float), dtype=None
   1094             )
   1095         elif orient == "split":

ValueError: Expected object or value

当我分别为每个文件执行此代码时,该代码有效。任何人都可以在这方面帮助我。

感谢与问候

Michael

python json python-3.x pandas
1个回答
0
投票

错误发生在df = pd.read_json (...)行上。该文件之一很可能不存在或不正确。我的建议是使用try catch进行标识:

for i in range(0,49):
    try:
        df = pd.read_json ('/media/michael/extHDD/Kaggle/DeepFAke/DF_all/metadata{}.json'.format(i))
    except:
        print('Error on iteration', i, ', file',
              '/media/michael/extHDD/Kaggle/DeepFAke/DF_all/metadata{}.json'.format(i))
        raise
df1.append(df.T)

捕获任何异常通常是一种不好的做法,因为它可以隐藏真正的异常情况,例如IO或内存错误。这就是为什么我重新引发上面代码中的原始异常的原因。

© www.soinside.com 2019 - 2024. All rights reserved.