7.4.1 os 与 os.path 模块
os 模块除了提供使用操作系统功能和访问文件系统的简便方法外,还提供了大量文件级操作的方法。os.path 模块提供了大量用于路径判断、切片、连接以及文件夹遍历的方法。

281408DEF07C4634CDA092AF1A8775CB.jpg

281408DEF07C4634CDA092AF1A8775CB.jpg
一些代码示例。
>>> import os
>>> import os.path
>>> os.path.exists('sample.txt')
False
>>> os.rename(r'D:\test3.txt', r'D:\test1.txt') # os.rename 可以实现文件改名和移动
>>> os.path.exists(r'D:\test3.txt')
False
>>> os.path.exists(r'D:\test1.txt')
True
>>> path = r'D:\Python\test1.txt'
>>> os.path.dirname(path)
'D:\\Python'
>>> os.path.split(path)
('D:\\Python', 'test1.txt')
>>> os.path.splitdrive(path)
('D:', '\\Python\\test1.txt')
>>> os.path.splitext(path)
('D:\\Python\\test1', '.txt')
下面代码列出当前目录所有扩展名为 py 的文件。
print([fname for fname in os.listdir(os.getcwd()) if os.path.isfile(fname) and fname.endswith('.py')])
['RegularExpression.py']
下面代码用来将当前目录所有扩展名为 html 的文件重命名为扩展名我 htm 的文件。
>>> os.chdir(r'D:\Python') # 更改工作目录
>>> file_list = [filename for filename in os.listdir(".") if filename.endswith('.html')]
>>> for filename in file_list:
newname = filename[:-4] + 'htm'
os.rename(filename, newname)
print(filename + " 更名为 " + newname)
test.html 更名为 test.htm
7.4.2 shutil 模块
shutil 模块提供了大量的方法支持文件和文件夹操作。
下面的代码使用该模块复制文件。
>>> shutil.copyfile(r'D:\Python\test1.txt', r'D:\Python\test2.txt')
'D:\\Python\\test2.txt'
下面的代码将 D:\Python\lab_py_0424 文件夹压缩至 D:\Python\lab_py.zip 文件。
>>> shutil.make_archive( r'D:\Python\lab_py', 'zip', r'D:\Python', 'lab_py_0424')
'D:\\Python\\lab_py.zip'
下面的代码将刚压缩的文件解压至 D:\lab_py 文件夹。
>>> shutil.unpack_arcive(r'D:\Python\lab_py.zip', r'D:\lab_py')
下面的代码删除刚刚解压的文件夹。
>>> shutil.rmtree(r'D:\lab_py')