【问题标题】:Strange warning using dask.dataframe to read csv使用 dask.dataframe 读取 csv 的奇怪警告
【发布时间】:2020-03-19 20:49:37
【问题描述】:

我正在使用 dask 数据框模块来读取 csv。

In [3]: from dask import dataframe as dd                                                                               

In [4]: dd.read_csv("/file.csv", sep=",", dtype=str, encoding="utf-8", error_bad_lines=False, collection=True, blocksize=64e6) 

我以前没问题,但是今天出现了一个奇怪的警告:

   FutureWarning: The default value of auto_mkdir=True has been deprecated and will be changed to auto_mkdir=False by default in a future release.
      FutureWarning,

直到我意识到它破坏了我的单元测试时我才担心,因为当从控制台使用它时,它只是一个简单的警告,但为我的应用设置的测试因此而破坏了。

有谁知道这个警告的原因或如何消除它?

【问题讨论】:

  • 您最近更新了 dask 版本吗?还是您使用的是在线 jupyter notebook?
  • 猜测,但如果您在 read_csv 函数中设置 auto_mkdir=True 会发生什么?
  • @d_kennetz 我正在使用 dask 2.12,最新版本,尚未更改
  • @boomkin 已经尝试过,但会引发错误:auto_mkdir is not a valid kwarg for read_csv
  • 我已经通过在我的 pytest.ini 中设置:filterwarnings = error ignore::FutureWarning 暂时解决了这个问题,但我仍然觉得这个警告不应该发生

标签: python warnings pytest dask future-warning


【解决方案1】:

文档自动回复:

  • issue 出现在 fsspec==0.6.3 和 dask==2.12.0 中,将来会被删除。
  • 为防止 pytest 由于警告而失败,请在项目中添加或编辑 pytest.ini 文件并设置
filterwarnings =
    error
    ignore::UserWarning
  • 如果您想让 dask 完全消除警告,请在函数调用 storage_options=dict("auto_mkdir"=True) 中显式设置它

【讨论】:

    【解决方案2】:

    我得到了同样的东西。找不到关于什么可能取代该功能的答案,我决定看看是否甚至需要该功能。果然,从 Pandas 1.3.0 开始,之前激发该功能的警告不再出现。所以

    pd.read_csv(import_path, error_bad_lines=False, warn_bad_lines=False, names=cols)
    

    变成了

    pd.read_csv(import_path, names=cols)
    

    并且工作正常,没有错误或警告。

    【讨论】:

      猜你喜欢
      • 2012-03-04
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 2022-01-18
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多