目的是查看腳本上方目錄中的json文件並加載它在該文件中找到的內容。這是我有:Python打開()以最小的絨毛變量
import os
import json
settings_file = '/home/me/foo/bar.txt'
root = os.path.dirname(os.path.dirname(os.path.abspath(settings_file))) # '/home/me'
target = os.path.join(root,'.extras.txt') # '/home/me/.extras.txt'
db_file= open(target)
databases = json.load(db_file) # works, returns object
databases2 = json.load(open(target)) # equivalent to above, also works
# try to condense code, lose pointless variables target and file
databases3 = json.load(open(os.path.join(root,'.extras.txt'))) # equivalent (I thought!) to above, doesn't work.
所以......爲什麼不全部在一次性,無控股變量版本的工作?哦,返回錯誤的是(現在在它的全部):
$ ./json_test.py
Traceback (most recent call last):
File "./json_test.py", line 69, in <module>
databases = json.load(open(os.path.join(root,'/.extras.txt')))
IOError: [Errno 2] No such file or directory: '/.extras.txt'
,滿足美國洛特的用心良苦意見...不要緊什麼target
設置爲。數據庫和數據庫2填充正確,而數據庫3不填充。 target
存在,是可讀的,包含json期望看到的內容。我懷疑有些事我不明白串起命令的性質......我可以讓代碼工作,只是想知道爲什麼簡潔(或複雜?)版本失敗。
你確定root是正確的錯誤表明它是/或'',而你的代碼給了別的 – Mark
根回到'/ home/me'這是預期和目標回來(當明確建立時)'/ home/me/.extras.txt',也是預期的。 – Wounder
@Wounder:請(1)更新問題。切勿將評論添加到您擁有的問題中。 (2)用工作和非工作示例的'target'值更新。請創建一個非常非常清晰的日誌。這個問題很難解決問題。 –