我正在製作一個python程序,並且我想檢查它是否是用戶第一次運行程序(firstTime == True
)。然而,在運行之後,我想永久性地將第一次更改爲False
。 (如果是第一次運行,還有其他變量需要保留,但這應該以同樣的方式解決)。在輸入後存儲用戶定義的數據
是否有更好的方法,然後從包含數據的文件中讀取?如果沒有,我怎麼才能找到文件正在從哪裏跑(所以數據將在同一個目錄)?
我正在製作一個python程序,並且我想檢查它是否是用戶第一次運行程序(firstTime == True
)。然而,在運行之後,我想永久性地將第一次更改爲False
。 (如果是第一次運行,還有其他變量需要保留,但這應該以同樣的方式解決)。在輸入後存儲用戶定義的數據
是否有更好的方法,然後從包含數據的文件中讀取?如果沒有,我怎麼才能找到文件正在從哪裏跑(所以數據將在同一個目錄)?
如果你想保存數據,它將「最終」到磁盤文件(儘管可能有中間步驟,例如通過網絡或數據庫系統,最終如果數據要持久化,它將在磁盤的某個地方文件)。
要「找出你在哪裏」,
import os
print os.path.dirname(os.path.abspath(__file__))
有變種,但是這是基本的想法。 __file__
在任何.py
腳本或模塊中給出了該文件所在的文件路徑(不會在交互式命令行上工作,當然,因爲沒有涉及的文件;-)。
Python標準庫中的os.path
模塊有很多有用的函數來處理路徑字符串 - 在這裏,我們使用兩個:abspath
給出文件路徑的絕對(非相對)版本,所以你沒有關心你目前的工作目錄是什麼;和dirname
來提取目錄名稱(實際上是整個目錄路徑;-)並刪除文件名正確(你不在乎模塊的名稱是foo.py
還是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
另外,如果x == True:或者if x == False:總是不正確的。你想要'如果x:'或'如果不是x:'分別。 – habnabit 2010-08-22 18:14:44