2010-08-22 61 views
0

我正在製作一個python程序,並且我想檢查它是否是用戶第一次運行程序(firstTime == True)。然而,在運行之後,我想永久性地將第一次更改爲False。 (如果是第一次運行,還有其他變量需要保留,但這應該以同樣的方式解決)。在輸入後存儲用戶定義的數據

是否有更好的方法,然後從包含數據的文件中讀取?如果沒有,我怎麼才能找到文件正在從哪裏跑(所以數據將在同一個目錄)?

+3

另外,如果x == True:或者if x == False:總是不正確的。你想要'如果x:'或'如果不是x:'分別。 – habnabit 2010-08-22 18:14:44

回答

3

如果你想保存數據,它將「最終」到磁盤文件(儘管可能有中間步驟,例如通過網絡或數據庫系統,最終如果數據要持久化,它將在磁盤的某個地方文件)。

要「找出你在哪裏」,

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

有變種,但是這是基本的想法。 __file__在任何.py腳本或模塊中給出了該文件所在的文件路徑(不會在交互式命令行上工作,當然,因爲沒有涉及的文件;-)。

Python標準庫中的os.path模塊有很多有用的函數來處理路徑字符串 - 在這裏,我們使用兩個:abspath給出文件路徑的絕對(非相對)版本,所以你沒有關心你目前的工作目錄是什麼;和dirname來提取目錄名稱(實際上是整個目錄路徑;-)並刪除文件名正確(你不在乎模塊的名稱是foo.py還是bar.py,只是在它的目錄中;-)。

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 
相關問題