如何将文件(.csv)加载到Beeware/公文包应用程序中?



我使用kivy作为GUI,公文包作为打包工具。我的。kv文件在appname/project/src/projectName/resources文件夹中。我还需要一个.csv文件,在同一个文件夹中,并希望使用pandas。导入这些包没有问题(我将它们添加到.toml文件中)。我不能使用完整路径,因为当我打包应用程序时,每台计算机上的路径都是不同的。使用相对路径到app.py文件不起作用,给我一个文件未找到的错误。是否有一种方法可以使用相对路径(可能是.toml文件中的source参数)读取文件?

kv = Builder.load_file('resources/builder.kv')
df = pd.read_csv('resources/chemdata.csv')
class ChemApp(App):
def build(self):
self.icon = 'resources/elemental.ico'
return kv

我刚刚在公文包中遇到并解决了类似的问题,尽管我使用的是BeeWare的Toga GUI。

在我的例子中,主Python文件app.py必须访问数据库文件resources/data.csv。在我在app.py中创建主窗口的类的构造函数中,我添加了以下行(导入行不存在,但在这里包含以澄清):

from pathlib import Path
self.resources_folder = Path(__file__).joinpath("../resources").resolve()
self.db_filepath = self.resources_folder.joinpath("data.csv")

然后我用self.db_filepath成功打开了我手机上的CSV文件。

__file__返回当前文件在任何平台或设备上的路径。

最新更新