【问题标题】:How do you load a file (.csv) into a Beeware/Briefcase application?如何将文件 (.csv) 加载到 Beeware/Briefcase 应用程序中?
【发布时间】:2021-10-09 17:42:54
【问题描述】:

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

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

【问题讨论】:

    标签: kivy kivy-language beeware


    【解决方案1】:

    我刚刚遇到并解决了公文包的类似问题,即使我使用的是 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__ 在任何平台或设备上返回当前文件的路径。

    【讨论】:

      猜你喜欢
      • 2017-10-22
      • 2013-07-14
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 2010-09-05
      相关资源
      最近更新 更多