將軟件布置在第三方電腦上會出現無法提前指定絕對路徑的情況,這回影響到后續的文件讀寫;json文件是數據交換的一種基本方法,為了減少重復造輪子,經行標準化代碼。
關于路徑:
import os
workspace=os.getcwd()
path=os.path.join(workspace,'calibration.json')
print(path)
由此得到calibration.json的文件絕對路徑,便于后續讀寫
關于json讀寫:
Dict1={"PPfilDifnThdDual_C":-0.5000000000000000,"PFltSig_ratiag_C":0.300450000000000000,"PFltSig_1_T":{"ST/X":[-150.0,85.6,221.3],"WERT":[0.03650,0.0360,0.02629]}}
Dict2={"PPfilDifnThdDual_C":-0.5000000000000000,"PFltSig_ratiag_C":0.300450000000000000,"PFltSig_1_T":{"ST/X":[-150.0,85.6,221.3],"WERT":[0.03650,0.0360,0.02629]}}dict3={}//新建一個字典,通過以下兩行將上述字典合并成一個dict3.update(dict1)dict3.update(dict2)
with open(path,"w") as f:#寫入calibrationjson.dump(dict3,f)
注:如果寫兩個dump會出錯,導致讀取json失敗,驗證寫入的json是否正確可以用網上的在線工具檢測。
讀取json:
with open(path, 'r', encoding='UTF-8') as f:#讀取calibration# print(f.read())str_=f.read()print(type(str_))//字符串dict_ = json.loads(str_)//字典print(dict_)
在flask中調用subprocess運行bat文件可能出現的問題是線程從flask中跳轉不回來,原因可能是subprocess線程沒有做完就運行了下面的代碼,比如退出本路由地址。
可能的解決方案是:
p=subprocess.Popen("start.bat", shell=False)stdout,stderr =p.communicate()p.wait()
這個方法不知道什么原理,但是目前能管用擋一下。
轉載于:https://blog.51cto.com/14156081/2337976