说明
os 模块提供了非常丰富的方法用来处理文件和目录
常用OS模块方法
OS模块
- os.getcwd() – 得到当前工作的目录
- os.remove() – 删除指定文件
- os.rmdir() – 删除指定目录(空目录)
- os.mkdir() – 创建目录
- os.makedirs() – 递归创建目录
- os.path.isfile() – 判断指定对象是否为文件。是返回True,否则False
- os.path.isdir() – 判断指定对象是否为目录。是True,否则False
- os.system() – 执行shell命令
- os.chdir() – 改变目录到指定目录
- os.path.getsize() – 获得文件的大小,如果为目录,返回0
- os.path.abspath() – 获得绝对路径
- os.path.exists(name) – 判断是否存在文件或目录name
- os.rename(old, new) – 重命名
- os.listdir() – 返回指定目录下的所有文件和目录名
- os.mknod(“test.txt”) – 创建空文件
shutil模块
- shutil.copyfile(“oldfile”,”newfile”) – 复制文件oldfile和newfile都只能是文件
- shutil.copy(“oldfile”,”newfile”) – 复制文件,oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
- shutil.copytree(“olddir”,”newdir”) – 复制文件夹,olddir和newdir都只能是目录,且newdir必须不存在
- shutil.move(“oldpos”,”newpos”) – 移动文件或目录
- shutil.rmtree(“dir”) – 空目录、有内容的目录都可以删
应用例子
检查路径是否存在,不存在则创建
def check_file_path(file_path, date):
"""
检查路径,不存在创建
:param file_path:
:param date:日期 :2017-05-11
:return:
"""
if file_path[0] == ".":
# 相对路径的处理
cwd = os.getcwd()
re_file_path = os.path.abspath(file_path)
file_dir = os.path.join(re_file_path, date)
# 判断存储路径是否存在
if os.path.isdir(file_dir):
return file_dir
else:
os.chdir(file_path)
os.mkdir(date)
os.chdir(cwd)
return file_dir
else:
file_dir = os.path.join(file_path, date)
# 判断存储路径是否存在
if os.path.isdir(file_dir):
return file_dir
else:
os.chdir(file_path)
os.mkdir(date)
return file_dir
将文件夹打包并删除
def make_zip(source_dir, output_filename):
zipf = zipfile.ZipFile(output_filename, 'w')
pre_len = len(os.path.dirname(source_dir))
for parent, dirnames, filenames in os.walk(source_dir):
for filename in filenames:
pathfile = os.path.join(parent, filename)
arcname = pathfile[pre_len:].strip(os.path.sep) #相对路径
zipf.write(pathfile, arcname)
zipf.close()
cwd = os.getcwd()
os.chdir(base_url)
make_zip(station_path, zip_name)
shutil.rmtree(str(station_id))
os.chdir(cwd)