我正在遍歷一個目錄樹,其中包含目錄和檔案。 我知道我可以使用 os.walk 來做這件事,但這只是我正在做的一個例子,而且最終的結果必須是遞回的。
獲取資料的函式如下:
。def walkfn(dirname)。
for name in os.listdir(dirname):
path = os.path.join(dirname, name)
if os.path.isdir(path):
print(name)
walkfn(path)
elif os.path.isfile(path):
print(name)
假設我們有這樣的目錄結構:
testDir/
a/
1/
2/
testa2.txt
testa.txt
b/
3/
testb3.txt
4/
上面的代碼將回傳以下內容:
a
testa.txt
1
2
testa2.txt
c
d
b
4
3
testb3.txt
在這一點上,它正在做我所期望的事情,而且數值都是正確的,但是我想把這些資料放到一個JSON物件中。 我看到我可以將這些資料添加到嵌套的字典中,然后將其轉換為 JSON,但是我在使用這種遞回方法將其添加到嵌套的字典中時卻慘遭失敗。
我期望出來的JSON會是這樣的:
我期望出來的JSON會是這樣的:
{
"test"/span>: {
"b"/span>: {
"4"/span>: {},
"3": {
"testb3.txt": null
}
},
"a": {
"testa.txt": null,
"1": {},
"2": {
"testa2.txt"/span>: null
}
}
}
uj5u.com熱心網友回復:
你應該在遞回函式中傳遞json_data:
import os
from pprint import pprint
from typing import Dict
def walkfn(dirname: str, json_data: Dict=None)。)
if not json_data。
json_data = dict()
for name in os.listdir(dirname):
path = os.path.join(dirname, name)
if os.path.isdir(path)。
json_data[name] = dict()
json_data[name] = walkfn(path, json_data=json_data[name])
elif os.path.isfile(path)。
json_data.update({name: None})
return json_data
json_data = walkfn(dirname="you_dir_name")
pprint(json_data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311641.html
標籤:
