从 qrc 资源文件创建一个 pandas 数据框

Create a pandas dataframe from a qrc resource file

我想将 CSV 文件保存到 qrc 文件中,然后将其内容放入 pandas 数据框中读取它,但我遇到了一些问题。

我创建了一个名为 res.qrc:

的 qrc 文件
<!DOCTYPE RCC><RCC version="1.0">
  <qresource>
    <file>dataset.csv</file>
  </qresource>
</RCC>

我编译它获得了 res_rc.py 文件。

为了阅读它,我创建了一个名为 resource.py:

的 python 脚本
import pandas as pd
import res_rc
from PySide.QtCore import *

file = QFile(":/dataset.csv")
df = pd.read_csv(file.fileName())
print(df)

但是我得到错误:IOError: File :/dataset.csv does not exist

所有文件(resource.pyres.qrsres_rc.pydataset.csv)都在同一文件夹中。

如果我这样做 res_rc.qt_resource_data 我可以看到内容。

如何创建 pandas 数据框?

qresource是一个虚拟路径,只有Qt知道如何获取它并且可以在没有警告的情况下在内部更改,在这些情况下必须做的是读取所有数据并将其转换为流io.BytesIO

import io
import pandas as pd
from PySide import QtCore
import res_rc


file = QtCore.QFile(":/dataset.csv")
if file.open(QtCore.QIODevice.ReadOnly):
    f = io.BytesIO(file.readAll().data())
    df = pd.read_csv(f)
    print(df)