【问题标题】:Storing user data in a Python script在 Python 脚本中存储用户数据
【发布时间】:2011-04-07 16:01:15
【问题描述】:

如果我在下次运行 Python 脚本时再次需要数据,那么存储用户在运行 Python 脚本时输入的数据的首选/常用方式是什么?

例如,我的脚本根据用户输入的内容执行计算,然后当用户再次运行该脚本时,它会获取上次运行的结果。

现在,我将数据写入文本文件并从那里读取。我认为我不需要存储非常大的记录(我会说少于 100 条)。

我的目标是使用此脚本的 Windows 和 Linux 用户,因此跨平台解决方案会很好。我对使用文本文件的唯一担忧是我觉得它可能不是最好的和常用的方法。

所以我的问题是,如果你需要为你的脚本存储一些数据,你会怎么做?

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用 slite 数据库或 CSV 文件。它们都非常易于使用,但适用于具有相同类型信息的行。

    最好的选择可能是shelve 模块

    import shelve
    
    shelf = shelve.open(filename)
    shelf['key1'] = value1
    shelf['key2'] = value2
    
    shelf.close()
     # next run
    shelf.open(filename)
    
    value1 = shelf['key1']
    #etc
    

    【讨论】:

    • @aaronsterling shelve 模块默认在当前目录中创建文件。在 python 中保存应用程序数据的最佳实践是什么。我的意思是在模块或用户目录中?
    【解决方案2】:

    对于少量数据,Python's pickle module 非常适合存储您希望以后轻松访问的数据 - 只需从内存中提取数据对象并写入用户主文件夹中的(隐藏)文件(适用于 Linux等)或应用程序数据(在 Windows 上)。

    正如@aaronnasterling 所提到的,sqlite3 file-based database 小巧、快速且简单,难怪有如此多的流行程序(如 Firefox 和 Pidgin)使用它。

    【讨论】:

    • 哦,是的,sqlite 非常适合我,因为它不需要任何安装。
    • +1 用于提及where to save the file
    【解决方案3】:

    对于 100 行,纯文本适用于标准 ConfigParsercsv 模块。

    假设您的数据结构很简单,文本提供了更复杂的格式排除的机会(例如 grep、vi、记事本)。

    【讨论】:

      【解决方案4】:

      由于您只需要最后一个结果,因此只需将结果存储在文件中即可。

      示例

      write('something', wb)
      

      它只会存储最后一个结果。然后当你重新运行脚本时,执行openread 之前的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-01
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多