雖然這個問題很小,但我以爲頗有必要單獨拿出來強調一下。python
這樣在遇到相似錯誤的時候能夠很快反應過來,進而節約了時間。spa
這裏我拿 shelve 模塊舉例(shelve的做用大體就是把python變量存放到文件中去),相似的問題均可以這樣變通。code
首先咱們建立一個種子文件seed.py:blog
import shelve data = shelve.open('data.db') data['secret'] = 'hello world'
運行後在腳本文件所在目錄生成了.db文件(這些文件就是存放your 'secret'的文件)字符串
而後咱們建立test.py 文件來使用該db文件。class
import shelve data = shelve.open('data.db') print(data['secret'])
運行後會發現 屏幕顯示 'hello world' 字符串。至此,你以前存儲的 'secret' 就顯示出來了。test
重點來了。。。。。import
不少時候咱們並不會這樣直接運行腳本文件,更多的狀況是把該文件做爲腳本,在須要的時候進行調用。。變量
舉個栗子:搜索
假設我如今處於dir目錄,我忘記了個人 'secret',我想再次調用 ../test.py 來查看,能夠嗎?
運行後發現:
錯誤提示爲 鍵錯誤:沒有'secret' 這個鍵。
可是咱們知道文件裏明明是有的啊,並且剛纔咱們運行的時候也正確顯示了
不少時候咱們就在這裏浪費了大把時間。。。 運氣好的話能搜索到相似的文章,而後就開心的解決了。運氣很差的話,,,本身腦補會怎樣吧
其實緣由就是:當咱們運行python腳本的時候,對於python腳原本說,腳本的默認當前目錄 就是 你執行這條運行命令時所在的目錄
例如:我如今是在dir目錄執行的這個腳本,那麼python腳本的當前目錄就在dir目錄,而不是原來的temp目錄
再細化一些,根據上述腳本,data = shelve.open('data.db') 就不是在temp目錄找'data.db'了,而是在運行該腳本的dir目錄下找'data.db',
可是該目錄下沒有'data.db',因此會新建db文件,而新建的db文件裏天然是沒有'secret'的。
知道了這些,就會瞬間感到豁然開朗,一切謎團都不復存在。
因而愉快的打開dir目錄,果真,發現了新的db文件:
解決方法就是:不要讓python依賴於默認的當前目錄,給它指明絕對路徑,這樣就能夠隨時隨地查看你的 'secret' 啦!