0

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

有没有比从包含数据的文件中读取更好的方法?如果没有,我怎样才能找到文件从哪里运行(所以数据将在同一个目录中)?

4

2 回答 2

3

如果你想持久化数据,它将“最终”保存到磁盘文件(尽管可能存在中间步骤,例如通过网络或数据库系统,最终如果数据要持久化,它将在磁盘文件的某个位置)。

为了“找出你在哪里”,

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

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

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

于 2010-08-22T17:24:27.130 回答
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
于 2010-08-22T19:12:27.343 回答