我在当前工作目录中保存了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)