python查看文件大小和文件夹内容的方法笔记

python查看文件大小和文件夹内容的方法笔记

点击查看代码
# 一、获取当前路径方法:
import sys, os

print(sys.argv[0])  # 获取当前工作目录路径 >>> E:/StudyDemo/递归函数.py
print(os.getcwd())  # 获取当前工作目录路径 >>> E:\StudyDemo
print(os.path.abspath('.'))  # 获取当前工作目录路径 >>> E:\StudyDemo
print(os.path.abspath('test.txt'))  # 获取当前目录文件下的工作目录路径 >>> E:\StudyDemo\test.txt
print(os.path.abspath('..'))  # 获取当前工作的父目录 !注意是父目录路径 >>> E:\
print(os.path.abspath(os.curdir))  # 获取当前工作目录路径 >>> E:\StudyDemo
"""改变当前目录
1) 使用: os.chdir(path)。
比如, 如果当前目录在 ‘E:’ 下面, 然后进入E 下面的files 文件 可以使用 os.chdir(E:\files).
之后,使用比如 test1 = open('file1.txt'),  打开的文件会是在这个 ‘E:\files’ 目录下的文件,而不是 'E' 下的文件。"""

# 组合拼接路径返回
print(os.path.join('file1', 'file2', 'file3', 'att'))  # 拼接得到路径 >>> file1\file2\file3\att


def d():
    with open('test', 'rt', encoding='utf-8') as f:
        data = f.readlines()
        for line in data:
            # print(line)
            pass


# 获得当前目录下所有文件(遍历)
'''“目录树生成器。”'''
# 1. os.walk() 目录树生成器
'''对于以顶部为根的目录树中的每个目录(包括顶部本身,但不包括“.”和“..”),产生一个 3 元组'''
'''dirpath 是一个字符串,是目录的路径。 dirnames 是 dirpath 中子目录名称的列表(不包括 '.' 和 '..')。 filenames 是 dirpath 中非目录文件的名称列表。
请注意,列表中的名称只是名称,没有路径组件。要获取 dirpath 中文件或目录的完整路径(以 top 开头),请执行 os.path.join(dirpath, name)
如果可选 arg 'topdown' 为真或未指定,则目录的三元组在其任何子目录的三元组之前生成(目录自上而下生成)。
如果 topdown 为 false,则在其所有子目录的三元组之后生成目录的三元组(目录自下而上生成)。
当 topdown 为真时,调用者可以就地修改 dirnames 列表(例如,通过 del 或 slice 赋值),并且 walk 只会递归到名称保留在 dirnames 中的子目录;这可用于修剪搜索,或强加特定的访问顺序。
当 topdown 为 false 时修改 dirnames 对 os.walk() 的行为没有影响,因为 dirnames 中的目录在 dirnames 本身生成时已经生成。无论 topdown 的值如何,都会在生成目录及其子目录的元组之前检索子目录列表.
默认情况下,来自 os.scandir() 调用的错误被忽略。如果指定了可选的 arg 'onerror',它应该是一个函数;它将使用一个参数调用,即一个 OSError 实例。它可以报告错误以继续遍历,或引发异常以中止遍历。
请注意,文件名可用作异常对象的文件名属性.
默认情况下,os.walk 不遵循指向支持它们的系统上的子目录的符号链接。为了获得此功能,请将可选参数“followlinks”设置为 true。
注意:如果您为 top 传递相对路径名,请不要在步行恢复之间更改当前工作目录。 walk 永远不会更改当前目录,并假定客户端也不会更改。
    import os
    from os.path import join, getsize
    for root, dirs, files in os.walk('python/Lib/email'):
        print(root, "consumes", end="")
        print(sum(getsize(join(root, name)) for name in files), end="")
        print("bytes in", len(files), "non-directory files")
        if 'CVS' in dirs:
            dirs.remove('CVS')  # don't visit CVS directories
'''
root = os.getcwd()
print('os.walk():::', os.walk(root))
# 语法  os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
# 参数:
# top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。
# topdown - -可选,为True或者没有指定, 一个目录的的 3-元组将比它的任何子文件夹的3 - 元组先产生(目录自上而下)。
# 如果topdown为 False, 一个目录的3 - 元组将比它的任何子文件夹的3 - 元组后产生(目录自下而上)。
# onerror - - 可选,是一个函数;
# 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk, 或者抛出exception终止walk。
# followlinks - - 设置为 true,则通过软链接访问目录。

roots = os.getcwd()


def file_name(file_dir):
    for origin, dirs, files in os.walk(file_dir):
        print(origin)  # os.walk()所在目录
        print(dirs)  # os.walk()所在目录的所有目录名
        print(files)  # os.walk()所在目录的所有非目录文件名


file_name(root)
posted @ 2022-03-03 10:43  zechariah1  阅读(405)  评论(0编辑  收藏  举报