python--os.walk, os.listdir,os.chdir

1、关于os.walk

OS.walk() 通过自顶向下或自底向上遍历树来生成目录树中的文件名。 对于以目录 top 为根的树中的每个目录(包括 top 本身),它产生一个 3 元组(目录路径、目录名、文件名)。
root :仅从您指定的内容中打印出目录。
dirs :从根打印出子目录。其中输出依次为目录下的文件夹,
文件夹1里面的文件夹,文件夹2里面的文件夹,文件夹3里面的文件夹。
files :打印出根目录和目录中的所有文件。
例如:Test文件夹下面的目录

python--os.walk, os.listdir,os.chdir_第1张图片

for (root,dirs,files) in os.walk("E:\Test"):
    print(f'root is {root}')
    print(f'dirs is {dirs}')
    print(f'files is {files}')
    print('\n')

结果如下:

root is E:\Test
dirs is ['testa', 'testb', 'testc']
files is ['test4.txt.docx']


root is E:\Test\testa
dirs is ['a1', 'a2']
files is []


root is E:\Test\testa\a1
dirs is []
files is ['a1.txt.docx']


root is E:\Test\testa\a2
dirs is []
files is ['a2.txt.docx']


root is E:\Test\testb
dirs is []
files is ['test3.txt.docx']


root is E:\Test\testc
dirs is []
files is []



Process finished with exit code 0

应用:获取该路径下的全部文件夹,不包含文件夹路径,只包含文件夹名称,如下:

for (root,dirs,files) in os.walk("E:\Test"):
    for sub_dir in dirs:
        print(sub_dir)

结果如下:

testa
testb
testc
a1
a2

其中a1与a2是testa,b子目录下的文件夹
所以这几行代码可以遍历Test目录下的所有文件夹。
同理可得遍历所有文件。

如果想为这些文件夹加上绝对路径,

for (root,dirs,files) in os.walk("E:\Test"):

    for sub_dir in dirs:
        print(sub_dir)
        i_dir = os.path.join(root, sub_dir)  # 获取各类的文件夹 绝对路径
        print(i_dir)

结果如下:

testa
E:\Test\testa
testb
E:\Test\testb
testc
E:\Test\testc
a1
E:\Test\testa\a1
a2
E:\Test\testa\a2

2、os.listdir

python中的os.listdir()方法用于获取指定目录下所有文件和目录的列表。 如果我们不指定任何目录,则将返回当前工作目录中的文件和目录列表。

参数:
路径(可选):目录的路径

返回类型:此方法返回指定路径中所有文件和目录的列表。 该方法的返回类型是列表。

path = "E:\Test"
dir_list = os.listdir(path)
print(dir_list)

结果如下:返回的是test目录下的所有文件夹以及文件

['test4.txt.docx', 'testa', 'testb', 'testc']

其中:

path = os.getcwd()
dir_list = os.listdir(path)
print(dir_list)

dir_list = os.listdir()
print(dir_list)

这三个效果一样。

应用:比如我想获取exercise所有文件
1、利用os.walk获取exercise目录下的所有文件夹
2、利用os.path.join获取绝对路径
3、再利用os.listdir获取文件夹下的文件

os.chdir

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