我正在制作一个 python 程序,我想检查它是否是用户第一次运行程序(firstTime == True
)。然而,在它运行之后,我想将 firstTime 永久更改为False
. (如果是第一次运行,我想要输入的其他变量将保留,但这应该以相同的方式解决)。
有没有比从包含数据的文件中读取更好的方法?如果没有,我怎样才能找到文件从哪里运行(所以数据将在同一个目录中)?
如果你想持久化数据,它将“最终”保存到磁盘文件(尽管可能存在中间步骤,例如通过网络或数据库系统,最终如果数据要持久化,它将在磁盘文件的某个位置)。
为了“找出你在哪里”,
import os
print os.path.dirname(os.path.abspath(__file__))
有变体,但这是基本思想。 __file__
在任何.py
脚本或模块中给出该文件所在的文件路径(当然,在交互式命令行上不起作用,因为那时不涉及任何文件;-)。
Python 标准库中的os.path
模块有很多有用的函数来操作路径字符串——在这里,我们使用两个:abspath
给出文件路径的绝对(非相对)版本,所以你不必关心你当前的工作目录是;并dirname
仅提取目录名称(实际上是整个目录路径;-)并正确删除文件名(您不关心模块的名称是否为foo.py
or bar.py
,只在它所在的目录中;-)。
如果程序第一次运行,只需在同一目录中创建文件就足够了(当然可以删除该文件以再次运行,但这有时很有用):
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