Python 3.x Pandas无法读取保存在子文件夹中的相同json文件
我在当前的工作目录中保存了5个json文件,下面的代码非常适合我阅读其中的每一个文件进行进一步分析:Python 3.x Pandas无法读取保存在子文件夹中的相同json文件,python-3.x,pandas,Python 3.x,Pandas,我在当前的工作目录中保存了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:
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:Trailing data
我尝试通过谷歌搜索,但仍然不知道发生了什么,我没有做任何更改,只是创建了一个子文件夹。尝试当前工作目录,然后加入新的子目录
cwd = os.getcwd()
path=os.path.join(cwd,'Result')#New Folder:Result
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
我刚刚在.pdf上测试了代码,因为下载目录中有pdf
cwd = os.getcwd()
path=os.path.join(cwd,'Result')#New Folder:Result
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
它对我有效。尝试当前工作目录,然后加入新的子目录
cwd = os.getcwd()
path=os.path.join(cwd,'Result')#New Folder:Result
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
我刚刚在.pdf上测试了代码,因为下载目录中有pdf
cwd = os.getcwd()
path=os.path.join(cwd,'Result')#New Folder:Result
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
这对我很有效。使用pandas打开文件时,只传递文件名,而不是绝对路径。所以,当脚本从文件所在的当前目录运行时,它能够打开它。 但当您将文件移动到结果目录时,它仍在搜索当前目录中的文件
cwd = os.getcwd()
path=os.path.join(cwd,'Result')#New Folder:Result
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
编辑以下代码以在文件名数组中具有完整的目录路径
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\u data.json']
词汇表
GlossDiv{'title':'S','GlossList':{'GlossEntry':
{我
['C:\Users\XXX\XXX\Result\all\u data1.json']
词汇表GlossDiv{'title':'S','GlossList':{'GlossEntry':{'I
文件中的示例数据:
{
"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"
}
}
}
}
}
使用pandas打开文件时,您只传递文件名,而不是绝对路径。因此,当脚本从文件所在的当前目录运行时,它可以打开该文件。 但当您将文件移动到结果目录时,它仍在搜索当前目录中的文件
cwd = os.getcwd()
path=os.path.join(cwd,'Result')#New Folder:Result
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
编辑以下代码以在文件名数组中具有完整的目录路径
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\u data.json']
词汇表
GlossDiv{'title':'S','GlossList':{'GlossEntry':
{我
['C:\Users\XXX\XXX\Result\all\u data1.json']
词汇表GlossDiv{'title':'S','GlossList':{'GlossEntry':{'I
文件中的示例数据:
{
"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"
}
}
}
}
}
您可以使用,它返回与您的路径名匹配的路径列表:
如果要读取尽可能多的独立数据帧文件:
如果需要一个数据帧:
您可以使用,它返回与您的路径名匹配的路径列表:
如果要读取尽可能多的独立数据帧文件:
如果需要一个数据帧:
在您的代码中,您没有告诉pandas查看子目录。os.listdirpath的输出不包含路径。我的路径是“.”对吗?因为os.listdir“.”提供了我当前工作目录中的所有文件,谢谢。换句话说,如果您有一个文件。/Result/a.json,那么您正在运行df=pd.read\u jsona.json,这将不起作用。我理解不管我在上面做了什么,[files for files in allfiles if files.endswith'.json']给了我一个文件名列表:['a.json'];但是,如果我没有包含路径,我们称之为read_json,它将在我的CWD中搜索此文件,但不会搜索结果文件夹。在您的代码中,您没有告诉pandas查看子目录。os.listdirpath的输出不包含路径。我的路径是“.”,对吗?因为os.listdir“.”提供了我当前工作目录中的所有文件,谢谢换句话说,如果你有一个文件。/Result/a.json,那么你正在运行df=pd.read_jsona.json,这将不起作用。我理解无论我做了什么,例如,[files for files in allfiles if files.endswith.json']给我一个文件名列表:['a.json'];但是,如果我没有包含路径,我们称之为read_json,它将在我的CWD中搜索此文件,但结果不是foldermy路径为“.”对吗?os.listdir.”提供我当前工作目录中的所有文件,但当您尝试加入时。如果使用其他字符串,则不确定其行为。我的路径为“.”对吗?os.listdir.”提供我当前工作目录中的所有文件工作指令但当您尝试加入时。使用其他字符串不确定其行为。&Rishi Bansal提到我可以通过os.getcwd获取cwd,并通过:os.path.joinwd创建我的路径,'Result';我认为它看起来不错,但它仍然会给我错误我理解无论我做了什么,[files for files in allfiles if files.endswith'.json']例如,给我一个文件名列表:['json_test.json'];但是如果我没有包含路径,我们称之为read_json,它将在我的CWD中搜索该文件,但不会搜索结果folder@Frank我已经编辑了我的答案以包含cwd,还尝试了示例json,它对我有效,您现在遇到了什么错误?我传递了:文件=[os.path.joinpath,如果files.endswith'.json'],则所有文件中的文件都是文件,这正在工作是的,我在这里的路径是cwd+文件夹&Rishi Bansal提到我可以通过os.getcwd获取cwd,并通过os.path.joinwd,'Result'创建我的路径;我认为它看起来不错,但不管发生什么,它仍然会给我错误我理解
我在上面做过,[files for files in allfiles if files.endswith'.json']给了我一个文件名列表:['json_test.json'];但如果我没有;不包括路径,我称之为read_json,它将在我的CWD中搜索此文件,但不会搜索结果folder@Frank我已经编辑了我的答案以包含cwd,也尝试了样本json,它对我有效,您现在遇到了什么错误?我传递了:files=[os.path.joinpath,files for files in allfiles if files.endswith.json'],这是workingYes,我在这里的路径是cwd+文件夹