Pandas无法读取保存在子文件夹中的相同json文件



我在当前工作目录中保存了5个json文件,下面的代码对我来说很好,可以读取它们中的每一个进行进一步分析:

import pandas as pd
import os
path=os.path.join('.') #Just want to as an example here
allfiles = os.listdir(path)
files = [files for files in allfiles if files.endswith('.json')]
for i in files:
df=pd.read_json(i)
allfiles

但是,当我在当前工作目录中创建一个子文件夹,并将我的5个json文件移动到其中时,我无法读取它们:

import pandas as pd
import os
path=os.path.join('.','Result')#New Folder:Result
allfiles = os.listdir(path)
files = [files for files in allfiles if files.endswith('.json')]
for i in files:
df=pd.read_json(i)
allfiles

错误消息是:ValueError:跟踪数据我试图通过谷歌搜索它,但仍然不知道发生了什么,我没有更改任何内容,只是创建了一个子文件夹。

尝试当前工作目录,然后加入新的子目录。

cwd = os.getcwd()
path=os.path.join(cwd,'Result')#New Folder:Result

我刚刚在.pdf上测试了代码,因为我在下载目录中有pdf。

import pandas as pd
import os
cwd = os.getcwd()
path=os.path.join(cwd,"Downloads")#New Folder:Result
allfiles = os.listdir(path)
files = [files for files in allfiles if files.endswith('.pdf')]
for i in files:
print i

它对我有效。

使用panda打开文件时,只传递文件名,而不是绝对路径。所以当脚本从文件所在的当前目录运行时,它就可以打开它。但当您将文件移动到Result目录时,它仍在当前目录中搜索文件。

在下面的代码中编辑,使文件名数组中有完整的目录路径。

cwd = os.getcwd()
path=os.path.join(cwd) #Just want to as an example here
allfiles = os.listdir(path)
files = [os.path.join(path,files) for files in allfiles if files.endswith('.json')]
print(files)
for f in files :
df1 = pd.read_json(f)
print(df1.head(1))

[C:\Users\XXX\XXX\XXX\all_data.json']

词汇表GlossDiv{‘title’:"S","GlossList":{‘GlossEntry’:{’…


path=os.path.join(cwd,'Result') #Just want to as an example here
allfiles = os.listdir(path)
files = [os.path.join(path,files) for files in allfiles if files.endswith('.json')]
print(files)
for f in files :
df1 = pd.read_json(f)
print(df1.head(1))

['C:\Users\XXX\XXX\Result\all_data1.json']

词汇表GlossDiv

文件中的样本数据:

{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}

您可以使用glob.glob,它返回与您的pathname:匹配的路径列表

import glob
pathname = 'Result/*.json'
list_of_paths_to_files = glob.glob(pathname)

如果您想读取多个单独的DataFrame:文件

list_of_dataframes = [pd.read_json(file_path) for file_path in list_of_paths_to_files]

如果你想要一个DataFrame:

df = pd.concat(list_of_dataframes)

最新更新