本文共 2066 字,大约阅读时间需要 6 分钟。
在Linux系统中,使用os.walk()函数可以递归地列出目录结构及其子目录和文件。以下是几种常用的方法,帮助你高效地管理目录和文件。
#!/usr/bin/env pythonimport osfor root, dirs in os.walk('/tmp'): print(root) print(dirs) 运行脚本可以看到每个目录及其子目录:
[root@iZbp171r05i3piseee5kuaZ tmp]# python /root/filelist.py/tmp ['gxmdir', 'csdir', '.ICE-unix']/tmp/gxmdir ['ddd']/tmp/gxmdir/ddd []/tmp/csdir ['3333', '4444']/tmp/.ICE-unix
这样可以清晰地看到每个目录的层级结构。
#!/usr/bin/env pythonimport osfor root, dirs, files in os.walk('/tmp'): print(f"当前目录:{root}") for dir in dirs: print(f"子目录:{dir}") for file in files: print(f"文件:{file}") 运行脚本可以看到完整的目录结构:
[root@iZbp171r05i3piseee5kuaZ tmp]# python /root/filelist.py/tmp ['gxmdir', 'csdir', '.ICE-unix'] /tmp/gxmdir ['ddd'] /tmp/gxmdir/ddd ['5555'] /tmp/csdir ['3333', '4444'] /tmp/.ICE-unix
这样可以一目了然地看到每个目录下的文件和子目录结构。
#!/usr/bin/env pythonimport osdef scanfile(path): filelist = os.listdir(path) allfile = [] for filename in filelist: filepath = os.path.join(path, filename) if os.path.isdir(filepath): scanfile(filepath) print(filepath) return allfile
运行脚本可以看到完整的目录结构:
[root@iZbp171r05i3piseee5kuaZ tmp]# python /root/filelist.py/tmp /tmp/gxmdir /tmp/gxmdir/ddd /tmp/gxmdir/ddd/5555 /tmp/csdir /tmp/csdir/3333 /tmp/csdir/4444 /tmp/.ICE-unix
这种方法适用于更复杂的文件管理任务,尤其是需要深度遍历目录结构时。
#!/usr/bin/env pythonimport osfor root, sub_dirs, files in os.walk(ssl_zip_dir): print(root) print(sub_dirs) print(files)
运行结果:
/root/cs['54804.zip', '139623.zip', '59762.zip', '125058.zip', '64267.zip', '203971.zip']/root/cs/test['77514.zip']
这个实例展示了os.walk()的实际应用,能够帮助你更好地管理和操作文件目录结构。
##备注
os.walk() 的常用参数:
topdown(默认True):决定遍历顺序,topdown为True时,先列出根目录的子目录和文件,否则从叶子节点开始。onerror(默认None):处理错误,通常用于处理权限问题。followlinks(默认False):是否追踪符号链接。os.path.join() 的作用:
通过以上方法,你可以根据具体需求灵活选择合适的方式来管理和列出文件目录结构。
转载地址:http://oeofk.baihongyu.com/