Python 3.x Pandas无法读取保存在子文件夹中的相同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:

我在当前的工作目录中保存了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: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+文件夹