如何将os.DirEntry对象与pandas read_csv()一起使用?

时间:2019-06-04 18:29:10

标签: python pandas operating-system

所以我想从不同的csv文件创建一个新的数据框,我的代码如下所示:

root = "/some/dir"
for folder in os.scandir(root):
        newDF = pd.DataFrame()
        for data in os.scandir(path):
            if fnmatch.fnmatch(data.name, "a_filename*"):
                temp = pd.read_csv(data, encoding = "ISO-8859-1")  # error
                newDF[list(temp)[1]] = temp[list(temp)[1]]

但是当我尝试读取CSV文件时,出现以下错误:

ValueError: Invalid file path or buffer object type: <class 'posix.DirEntry'>

我只是不知道如何使用os.scandir()返回的DirEntry实例。我也尝试通过data.nameos.fsdecode(data),但是没有运气。

传递给pd.read_csv()的正确选择是什么?

1 个答案:

答案 0 :(得分:2)

DirEntry对象定义了一个path属性,您可以查询该属性,该属性返回该文件的路径(可能是完全限定的路径,也可能不是完全限定的路径)。

  

path
  条目的完整路径名:等效于os.path.join(scandir_path, entry.name),其中scandir_pathscandir()路径参数。

就您而言,您只需要做

df = pd.read_csv(data.path, encoding="ISO-8859-1")