python os.walk()

os.walk()

os.walk(top, topdown=Ture, onerror=None, followlinks=False)
  1. top – 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】;
  2. topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上);
  3. onerror – 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk;
  4. followlinks – 设置为 true,则通过软链接访问目录。

函数执行之后得到一个三元tupple(dirpath, dirnames, filenams):

  1. dirpath:string,是当前目录的路径;
  2. dirnames:list, 是当前路径下所有的子文件夹名字;
  3. filenames:list, 是当前路径下所有的非目录子文件的名字。

要获取完整的路径,dirnames和filenames是不包含路径信息的,可以使用:

os.path.join(dirpath, dirnames)

示例一:

import os

target_dirs = r"C:\Program Files\Windows Defender\zh-CN"
for root, dirs, files in os.walk(target_dirs, topdown=False):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name)) 

输出:
Output exceeds the size limit. Open the full output data in a text editor
C:\Program Files\Windows Defender\Offline\EppManifest.dll
C:\Program Files\Windows Defender\Offline\MsMpLics.dll
C:\Program Files\Windows Defender\Offline\OfflineScannerShell.exe
C:\Program Files\Windows Defender\zh-CN\EppManifest.dll.mui
C:\Program Files\Windows Defender\zh-CN\MpAsDesc.dll.mui
C:\Program Files\Windows Defender\zh-CN\MpEvMsg.dll.mui
C:\Program Files\Windows Defender\zh-CN\MsMpRes.dll.mui
C:\Program Files\Windows Defender\zh-CN\OfflineScannerShell.exe.mui
C:\Program Files\Windows Defender\zh-CN\ProtectionManagement.dll.mui
C:\Program Files\Windows Defender\zh-CN\ProtectionManagement.mfl
C:\Program Files\Windows Defender\zh-CN\ProtectionManagement_Uninstall.mfl
C:\Program Files\Windows Defender\zh-CN\shellext.dll.mui
C:\Program Files\Windows Defender\AmMonitoringInstall.mof
C:\Program Files\Windows Defender\AMMonitoringProvider.dll
C:\Program Files\Windows Defender\AmStatusInstall.mof
C:\Program Files\Windows Defender\ClientWMIInstall.mof
C:\Program Files\Windows Defender\ConfigSecurityPolicy.exe
C:\Program Files\Windows Defender\DefenderCSP.dll
C:\Program Files\Windows Defender\EppManifest.dll
C:\Program Files\Windows Defender\FepUnregister.mof
C:\Program Files\Windows Defender\MpAsDesc.dll
C:\Program Files\Windows Defender\MpAzSubmit.dll
C:\Program Files\Windows Defender\MpClient.dll
C:\Program Files\Windows Defender\MpCmdRun.exe
C:\Program Files\Windows Defender\MpCommu.dll

C:\Program Files\Windows Defender\ThirdPartyNotices.txt
C:\Program Files\Windows Defender\Offline
C:\Program Files\Windows Defender\Platform
C:\Program Files\Windows Defender\zh-CN

示例二:

import os

target_dirs = r"C:\Program Files\Windows Defender"
target_file = []
for root, dirs, files in os.walk(target_dirs):
    for file in files:  
        # os.path.splitext()函数将路径拆分为文件名 + 扩展名
        if os.path.splitext(file)[1] == '.exe':  
            target_file.append(os.path.join(root, file)) 
            print(file)

输出:
ConfigSecurityPolicy.exe
MpCmdRun.exe
MsMpEng.exe
NisSrv.exe
OfflineScannerShell.exe

你可能感兴趣的:(python,python)