Python 内置模块

本文介绍了Python中os.walk()和sys.argv模块的使用。os.walk()用于扫描指定目录下的子目录和文件,可自顶向下或自底向上扫描,还能输出指定后缀文件和子目录;sys.argv模块主要用于获取执行脚本的参数,增加参数可获取用户传入内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

os.walk

os.walk()主要用来扫描某个指定目录下所包含的子目录和文件。这篇文章将通过几个简单的例子来说明python中os.walk()的使用方法。

假设我们的test文件夹有如下的目录结构,【可以在windows中通过tree /f命令来查看目录的文件结构】

D:.
├─dir1
│  │  1-1.txt
│  │  1-2.txt
│  │
│  └─dir1-1
│          1-1-1.txt
│
├─dir2
│      2-1.txt
│      2-2.txt
│
└─dir3
        3-1.txt
        3-2.txt

我们首先用os.walk扫描test文件夹下所有的子目录和文件:

import os

for curDir, dirs, files in os.walk("test"):
    print("====================")
    print("现在的目录:" + curDir)
    print("该目录下包含的子目录:" + str(dirs))
    print("该目录下包含的文件:" + str(files))

输出结果如下:

====================
现在的目录:D:/test/
该目录下包含的子目录:['dir1', 'dir2', 'dir3']
该目录下包含的文件:[]
====================
现在的目录:D:/test/dir1
该目录下包含的子目录:['dir1-1']
该目录下包含的文件:['1-1.txt', '1-2.txt']
====================
现在的目录:D:/test/dir1\dir1-1
该目录下包含的子目录:[]
该目录下包含的文件:['1-1-1.txt']
====================
现在的目录:D:/test/dir2
该目录下包含的子目录:[]
该目录下包含的文件:['2-1.txt', '2-2.txt']
====================
现在的目录:D:/test/dir3
该目录下包含的子目录:[]
该目录下包含的文件:['3-1.txt', '3-2.txt']

上面的代码在扫描子目录和文件的时候,是采用自顶向下的方式进行扫描。可以理解为是深度优先进行遍历。

如果想要自底向上地扫描子目录和文件,可以添加上topdown=False参数:

# 使用os.walk自底向上扫描目录
import os

for curDir, dirs, files in os.walk("test", topdown=False):
    print("====================")
    print("现在的目录:" + curDir)
    print("该目录下包含的子目录:" + str(dirs))
    print("该目录下包含的文件:" + str(files))

输出结果如下:

现在的目录:D:/test/dir1\dir1-1
该目录下包含的子目录:[]
该目录下包含的文件:['1-1-1.txt']
====================
现在的目录:D:/test/dir1
该目录下包含的子目录:['dir1-1']
该目录下包含的文件:['1-1.txt', '1-2.txt']
====================
现在的目录:D:/test/dir2
该目录下包含的子目录:[]
该目录下包含的文件:['2-1.txt', '2-2.txt']
====================
现在的目录:D:/test/dir3
该目录下包含的子目录:[]
该目录下包含的文件:['3-1.txt', '3-2.txt']
====================
现在的目录:D:/test/
该目录下包含的子目录:['dir1', 'dir2', 'dir3']
该目录下包含的文件:[]

我们还可以利用os.walk输出test文件夹下所有的文件:

# 使用os.walk输出某个目录下的所有文件
import os

for curDir, dirs, files in os.walk("test"):
    for file in files:
        print(os.path.join(curDir, file))

输出结果如下:

D:/test\dir1\1-1.txt
D:/test\dir1\1-2.txt
D:/test\dir1\dir1-1\1-1-1.txt
D:/test\dir2\2-1.txt
D:/test\dir2\2-2.txt
D:/test\dir3\3-1.txt
D:/test\dir3\3-2.txt

也可以利用os.walk输出test文件夹下指定后缀名(比如.txt)文件:

import os

for curDir, dirs, files in os.walk("D:/test"):
    for file in files:
        print(os.path.join(curDir, file))

输出结果如下:

D:/test\dir1\1-1.txt
D:/test\dir1\1-2.txt
D:/test\dir1\dir1-1\1-1-1.txt
D:/test\dir2\2-1.txt
D:/test\dir2\2-2.txt
D:/test\dir3\3-1.txt
D:/test\dir3\3-2.txt

同样地,我们也可以利用os.walk输出test文件夹下所有的子目录(子文件夹):

import os

for curDir, dirs, files in os.walk("D:/test"):
    for dir in dirs:
        print(dir)

输出结果:

dir1
dir2
dir3
dir1-1

shutil模块

import shutil

# 1. 删除文件夹
"""
path = os.path.join(base_path, 'xx')
shutil.rmtree(path)
"""

# 2. 拷贝文件夹
"""
shutil.copytree("/Users/wupeiqi/Desktop/图/csdn/","/Users/wupeiqi/PycharmProjects/CodeRepository/files")
"""

# 3.拷贝文件
"""
shutil.copy("/Users/wupeiqi/Desktop/图/csdn/WX20201123-112406@2x.png","/Users/wupeiqi/PycharmProjects/CodeRepository/")
shutil.copy("/Users/wupeiqi/Desktop/图/csdn/WX20201123-112406@2x.png","/Users/wupeiqi/PycharmProjects/CodeRepository/x.png")
"""

# 4.文件或文件夹重命名
"""
shutil.move("/Users/wupeiqi/PycharmProjects/CodeRepository/x.png","/Users/wupeiqi/PycharmProjects/CodeRepository/xxxx.png")
shutil.move("/Users/wupeiqi/PycharmProjects/CodeRepository/files","/Users/wupeiqi/PycharmProjects/CodeRepository/images")
"""

# 5. 压缩文件
"""
# base_name,压缩后的压缩包文件
# format,压缩的格式,例如:"zip", "tar", "gztar", "bztar", or "xztar".
# root_dir,要压缩的文件夹路径
"""
# shutil.make_archive(base_name=r'datafile',format='zip',root_dir=r'files')


# 6. 解压文件
"""
# filename,要解压的压缩包文件
# extract_dir,解压的路径
# format,压缩文件格式
"""
# shutil.unpack_archive(filename=r'datafile.zip', extract_dir=r'xxxxxx/xo', format='zip')

sys.argv模块

这个模块主要作用是获取获取执行脚本的参数。

import sys

print(sys.argv)

执行输出:

['c:/Users/vincent/Desktop/code/neimeng-python/test/test_argv.py']

输出结果是当前的执行文件。

当执行脚本时增加参数:python test.py 123 abc tom
执行结果输出:

['c:/Users/vincent/Desktop/code/neimeng-python/test/test_argv.py', 'abc', '123', 'tom']

就可以获取用户传入的参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值