【问题标题】:pandas read_csv not working when running via cron on Mac OS在 Mac OS 上通过 cron 运行时 pandas read_csv 不起作用
【发布时间】:2020-10-02 07:45:44
【问题描述】:

我有一个由cron 运行的python 脚本。该脚本导入 pandas 模块并使用 read_csv 将 csv 加载到数据框,然后将其保存到另一个 csv。 'apath' 是文件的绝对路径:

statedata_raw=pd.read_csv(apath+'statedata.csv')
statedata_raw.to_csv(apath+'state_data.csv',index=False)    

csv文件的权限设置正确-rwxr-xr-x

当我在命令行中运行它时,一切正常。当我通过 cron 运行它时,出现以下错误:

Traceback (most recent call last):
  File "/users/maderman/wdtest.py", line 21, in <module>
    statedata_raw=pd.read_csv(apath+'statedata.csv')
  File "/opt/miniconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 676, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/opt/miniconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 448, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "/opt/miniconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 880, in __init__
    self._make_engine(self.engine)
  File "/opt/miniconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 1114, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "/opt/miniconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 1891, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas/_libs/parsers.pyx", line 374, in pandas._libs.parsers.TextReader.__cinit__
  File "pandas/_libs/parsers.pyx", line 678, in pandas._libs.parsers.TextReader._setup_parser_source
OSError: Initializing from file failed

我验证了 pandas 本身正在加载,并且 to_csv 通过替换 read_csv 正在工作。当我用以下代码替换 read_csv 以手动创建数据框时,一切正常,在命令行中运行并在 cron 中运行:

cat=['a','a','a','a','a','b','b','b','b','b']
val=[1,2,3,4,5,6,7,8,9,10]
columns=['cat','val']
data=[cat,val]
dict={key:value for key,value in zip(columns,data)}
statedata_raw=pd.DataFrame(data=dict)

我发现另一个帖子建议将参数 engine='python' 传递给 read_csv,但没有任何作用。

所以我知道:

  1. cron 运行 python 正常
  2. 它可以导入 pandas 并运行几个不同的 pandas 函数。
  3. 文件权限没问题

这个问题似乎与read_csv 命令特别相关。

任何建议将不胜感激。

【问题讨论】:

  • 我做了更多的研究并排除了一些事情。 read_csv 确实 工作,但仅当它打开通过 cron 本身创建的文件时。我怀疑存在某种深奥的权限问题,但还没有弄清楚。我在这里以更具体的方式重新定义了这个问题:stackoverflow.com/questions/62353610

标签: python pandas csv cron oserror


【解决方案1】:

这个问题的框架是错误的,它归结为权限问题。在这里发布并回答了一个更好的问题:stackoverflow.com/questions/62353610

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2015-08-05
    • 1970-01-01
    • 2016-09-01
    • 2019-03-15
    • 2018-12-06
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多