0

我正在尝试从共享文件夹(在我的机器上使用 nfs 安装)上的 .ods 文件中使用 pandas 检索 csv 格式的数据,当其他人处理该文件时,我无法获取数据。

在这种情况下,文件被锁定,这对于避免并发版本非常有意义。例如,在使用 LibreOffice 打开文件时可以看到它,或者只是盯着文件夹看。.~lock 文件存在。

但是,就我而言,我只是试图打开文件以使用 pandas 读取它,而不是对其进行编辑。例如,Libre Office 提供了这种可能性。pandas 怎么不能提供这个功能呢?

更准确地说,这里是命令:

sheet_df = pd.read_excel(filepath, sheet_name= "Sheet2", engine="odf", skiprows=3)

和输出

File "/Users/user_name/job.py", line 148, in read_file
    sheet_df = pd.read_excel(filepath, sheet_name= "Sheet2", engine="odf", skiprows=3)
  File "/Users/user_name/.pyenv/versions/virtualenv_prod/lib/python3.9/site-packages/pandas/util/_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "/Users/user_name/.pyenv/versions/virtualenv_prod/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 364, in read_excel
    io = ExcelFile(io, storage_options=storage_options, engine=engine)
  File "/Users/user_name/.pyenv/versions/virtualenv_prod/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 1233, in __init__
    self._reader = self._engines[engine](self._io, storage_options=storage_options)
  File "/Users/user_name/.pyenv/versions/virtualenv_prod/lib/python3.9/site-packages/pandas/io/excel/_odfreader.py", line 35, in __init__
    super().__init__(filepath_or_buffer, storage_options=storage_options)
  File "/Users/user_name/.pyenv/versions/virtualenv_prod/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 420, in __init__
    self.book = self.load_workbook(self.handles.handle)
  File "/Users/user_name/.pyenv/versions/virtualenv_prod/lib/python3.9/site-packages/pandas/io/excel/_odfreader.py", line 46, in load_workbook
    return load(filepath_or_buffer)
  File "/Users/user_name/.pyenv/versions/virtualenv_prod/lib/python3.9/site-packages/odf/opendocument.py", line 982, in load
    z = zipfile.ZipFile(odffile)
  File "/Users/user_name/.pyenv/versions/3.9.2/lib/python3.9/zipfile.py", line 1257, in __init__
    self._RealGetContents()
  File "/Users/user_name/.pyenv/versions/3.9.2/lib/python3.9/zipfile.py", line 1322, in _RealGetContents
    raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file

顺便说一句,我在 MAC BigSur 上使用 python 3.9.2。

我错过了什么,还是 pandas.read_excel 不能只读取文件?

4

0 回答 0