美文网首页
在Python中列出目录中的所有文件

在Python中列出目录中的所有文件

作者: NeXTCDO | 来源:发表于2017-08-16 18:30 被阅读1871次

    os.listdir()
    可以获得一个目录中所有文件或者子目录。
    如果你只想要文件的话,你也可以用os.path.isfile()
    把其他的过滤掉:

    from os import listdir
    from os.path import isfile, join
    onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
    
    

    或者你可以用os.walk()
    ,它遍历每个目录将会返回两个列表(一个文件列表,一个目录列表),如果你想要顶层目录只需要在第一次迭代后break一下即可.

    from os import walk
    
    f = []
    for (dirpath, dirnames, filenames) in walk(mypath):
        f.extend(filenames)
        break
    
    

    应用

    如果是打包下载某一个目录下面所有文件,包括文件夹呢?打包文件解压后包含原始的文件目录层级关系。

    import zipfile
    zipFileFullPathName='/storage/asset/zips/10000/10000.zip'
    filePath='/storage/asset/files/10000/'
    relatePath='/storage/asset/files'
    with zipfile.ZipFile(zipFileFullPathName, 'w', zipfile.ZIP_DEFLATED) as myzip:
        for folder, subfolders, fileNames in os.walk(filePath):
            for fileName in fileNames:
                fileFullPathName=os.path.join(folder,fileName)
                #relatePath 相对路径用于压缩包解压后的根目录开始的目录。
                #例如压缩 /storage/asset/files/10000目录下所有文件,
                #relatePath设置为 /storage/asset/files后最终压缩包解压的根目录是10000文件夹开始           
                myzip.write(fileFullPathName,os.path.relpath(fileFullPathName,relatePath))
             
    
    

    相关文章

      网友评论

          本文标题:在Python中列出目录中的所有文件

          本文链接:https://www.haomeiwen.com/subject/pxyvrxtx.html