【问题标题】:How to use a os.DirEntry object with pandas read_csv()?如何将 os.DirEntry 对象与 pandas read_csv() 一起使用?
【发布时间】:2019-10-20 07:29:58
【问题描述】:

所以我想从不同的 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() 的正确内容是什么?

【问题讨论】:

    标签: python pandas operating-system


    【解决方案1】:

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

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

    在你的情况下,你只需要这样做

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

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      相关资源
      最近更新 更多