1. 程式人生 > >檔案的讀寫及其相關

檔案的讀寫及其相關

將軟體佈置在第三方電腦上會出現無法提前指定絕對路徑的情況,這回影響到後續的檔案讀寫;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:#寫入calibration
        json.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()

這個方法不知道什麼原理,但是目前能管用擋一下。