输入后存储用户定义的数据

时间:2010-08-22 17:19:53

标签: python store

我正在制作一个python程序,我想检查用户是否第一次运行该程序(firstTime == True)。然而,在它运行之后,我想永久地将firstTime更改为False。 (如果是第一次运行,还有其他我想要输入的变量,但这应该以相同的方式解决。)

有没有比从包含数据的文件中读取更好的方法?如果没有,我如何找到文件的运行位置(因此数据将在同一个目录中)?

2 个答案:

答案 0 :(得分:3)

如果你想保留数据,它将“最终”成为磁盘文件(虽然可能有中间步骤,例如通过网络或数据库系统,最终如果数据是持久的,它将在磁盘文件中的某个地方)。

要“找出你的位置”,

import os
print os.path.dirname(os.path.abspath(__file__))

有变种,但这是基本的想法。任何__file__脚本或模块中的.py都会给出该文件所在的文件路径(当然,不会在交互式命令行上运行,因为当时没有涉及文件; - )。

Python标准库中的os.path模块有许多有用的函数来操作路径字符串 - 这里,我们使用两个:abspath来给出文件路径的绝对(非相对)版本,所以你不必关心你当前的工作目录是什么;和dirname只提取目录名称(实际上,整个目录路径;-)并删除正确的文件名(你不关心模块的名称是foo.py还是bar.py,只在它的目录中; - )。

答案 1 :(得分:0)

如果第一次运行程序就足以在同一目录中创建文件(当然可以删除该文件以便再次运行,但这有时可能有用):

firstrunfile = 'config.dat'
if not  os.path.exists(firstrunfile):
    ## configuration here
    open(firstrunfile,'w').close() ## .write(configuration)
    print 'First run'
    firstTime == True
else:
    print 'Not first run'
    ## read configuration
    firstTime == False