简述
判断操作系统, {列举, 复制, 重命名, 删除} * {目录,文件}
等.
windows 下, ‘d:\a\b’ 与 ‘d:/a/b’ 等价.
自带 platform 库
import platform
platform.system() #Windows
platform.platform() #'Windows-10-10.0.15063-SP0'
shutil 库
即 sh-util , 提供了文件,目录的增删复制等操作.
比如原始的os.rmdir(path)
, 遇到非空的目录就不能删, 而用了这个库, 就可以直接删掉了.
shutil.rmtree(path)
递归地删除一个目录树.
自带 os 模块
基础操作
os.path.join(path, file_or_dir)
路径拼接
os.path.isdir(file_path)
判断是否为目录
os.path.isfile(file_path)
判断是否为文件
目录操作
os.listdir(path)
返回path目录下的文件或文件夹, 只有一层, 不作递归.
os.rmdir(path)
删除path指定的空目录,如果目录非空,则抛出一个OSError异常.
文件操作
os.remove(path)
删除路径为path的文件。如果path 是一个目录,将抛出OSError.
os.rename(src, dst)
重命名, 目录/文件 均适用.
例子
import os
from os.path import isdir,isfile
# 列举path下的目录和文件, 不递归.
def find_files_and_directories(path='d:/out/'):
files = []
dirs = []
for file_or_dir in os.listdir(path):
if isdir(os.path.join(path, file_or_dir)):
dirs.append(file_or_dir)
elif isfile(os.path.join(path, file_or_dir)):
files.append(file_or_dir)
print('files:' + str(files))
print('dirs:' + str(dirs))
# 递归地拿到一个目录下的所有文件
def find_files_recursively(path='d:/out/'):
files = []
for file_or_dir in os.listdir(path):
if isdir(os.path.join(path, file_or_dir)):
files.extend(find_files_recursively(os.path.join(path, file_or_dir)))
elif isfile(os.path.join(path, file_or_dir)):
files.append(os.path.join(path, file_or_dir))
return files