雖然這個問題很小,但我覺得很有必要單獨拿出來強調一下。
這樣在遇到類似錯誤的時候可以很快反應過來,進而節約了時間。
這里我拿 shelve 模塊舉例(shelve的作用大致就是把python變量存放到文件中去),類似的問題都可以這樣變通。
首先我們創建一個種子文件seed.py:
import shelve data = shelve.open('data.db') data['secret'] = 'hello world'
運行后在腳本文件所在目錄生成了.db文件(這些文件就是存放your 'secret'的文件)
然后我們創建test.py 文件來使用該db文件。
import shelve data = shelve.open('data.db') print(data['secret'])
運行后會發現 屏幕顯示 'hello world' 字符串。至此,你之前存儲的 'secret' 就顯示出來了。
重點來了。。。。。
很多時候我們並不會這樣直接運行腳本文件,更多的情況是把該文件作為腳本,在需要的時候進行調用。。
舉個栗子:
假設我現在處於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' 啦!