我正在尝试使用O365 python库列出OneDrive驱动器中的所有项目和子项目。
我的OneDrive组织如下:
1:F: Clt
1:F: CltRoot
1:F: Documents
--2:F:clientDocs
--2:F:clt
---3:F:sub3
1:F: ID-Clt-Ctr
--2:F:Clt
---3:F:Clt
----4:F:Sub4
--2:F:Pieces
1:F: Pictures
1:f: Clt.txt
1:f: Getting started with OneDrive.pdf
1:f: text2.txt
f代表文件,f代表文件夹,数字是深度级别
有了这个代码,我可以列出一个固定的子级别,即3
# 3 levels
items = my_drive.get_items()
for item in items:
if (item.is_folder) :
print('1:F:',item.name)
for si in item.get_child_folders():
if (si.is_folder):
print('2:F:'+si.name)
for ssi in si.get_child_folders():
if (ssi.is_folder):
print('3:F:'+ssi.name)
elif (ssi.is_file) :
print('3:f:',ssi.name)
elif (si.is_file) :
print('2:f:',si.name)
elif (item.is_file) :
print('1:f:',item.name)
我希望能够有一个代码,它将继续显示没有子级别限制的文件或文件夹(sub4不显示(,继续的条件是通过item.get_child_folders((测试项目是否是文件夹和内容是否是子文件夹
请问我该怎么做?
提前感谢
以下是开始使用的代码。(代码调用是从您的代码中复制的,我认为它们是正确的(。这应该是可行的,尽管它不会打印出目录级别(我将把该功能留给您来实现(。
def print_dir(items):
for item in items:
print(item.name)
if item.is_dir:
# do stuff with directories
print_dir(item.get_child_folders()) # this is the recursive call (step into dir)
else:
# do stuff with files
pass
print_dir(my_drive.get_items())