我有一個 json 組態檔,我在那里存盤我的資料路徑
資料按月和天存盤,因此如果沒有 json,我將使用 f 字串,例如:
spark.read.parquet(f"home/data/month={MONTH}/day={DAY}")
現在我想從 json 中提取它。但是,我遇到了 Month 和 day 變數的問題。我不想在 json 中拆分路徑。但是這樣寫:
{
"path":"home/data/month={MONTH}/day={DAY}"
}
并加載:
DAY="1"
MONTH="12"
conf_path=pandas.read_json("...")
path=conf_path["path"]
data=spark.read_parquet(f"{path}")
并沒有真正起作用。
你能提示我一個解決方案來檢索帶有可變元素的路徑并在閱讀后填充它們嗎?您將如何在不拆分路徑的情況下存盤或檢索路徑?謝謝
-------- 編輯:解決方案--------
感謝下面的 Deepak Tripathi 回答,答案是使用字串格式。
使用這樣的代碼:
day="1"
month="12"
conf_path=pandas.read_json("...")
path=conf_path["path"]
data=spark.read_parquet(path.format(MONTH=month, DAY=day))
uj5u.com熱心網友回復:
你應該使用 string.format() 而不是f-strings
仍然如果你想使用 f-strings 那么你應該eval像這樣使用,它不安全
DAY="1"
MONTH="12"
df = pd.DataFrame(
[{
"path":"home/data/month={MONTH}/day={DAY}"
},
{
"path":"home/data/month={MONTH}/day={DAY}"
}
]
)
a = df['path'][0]
print(eval(f"f'{a}'"))
#home/data/month=12/day=1
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/518555.html
上一篇:將自定義檔案格式設為json檔案
