python基础---文件和目录
import os
- os.listdir() # 目录列表
- os.getcwd() # 当前工作目录
- os.chdir('d:') # 改变目录
import os.path
- os.path.join() # 连接
- os.path.exists('jet') # 是否存在
- os.path.isdir('jet') # 是否是目录
- os.path.abspath('.') # 绝对路径
- os.path.isabs('.') # 是否是绝对路径
- os.path.relpath('.') # 是否是相对路径 relative
- os.path.sep # '\\'
- path = 'C:\\study\\jupyter\\Module_3\\3-1_管理目录与文件'
- path.split(os.path.sep) # 返回结果['C:', 'study', 'jupyter', 'Module_3', '3-1_管理目录与文件']是一个列表
- os.path.split('C:\\study\\jupyter\\Module_3\\1.txt') # 返回一个元组
- #返回结果('C:\\study\\jupyter\\Module_3', '1.txt')
- os.path.splitext('C:\\study\\jupyter\\Module_3\\1.txt')
- #返回结果('C:\\study\\jupyter\\Module_3\\1', '.txt')
- os.path.basename('C:\\study\\jupyter\\Module_3\\1.txt') # '1.txt'
- os.path.dirname('C:\\study\\jupyter\\Module_3\\1.txt') # 'C:\\study\\jupyter\\Module_3'
删除文件或目录
- os.unlink('2.txt') # 彻底删除文件,不放入回收站
- import shutil # 导入模块
- shutil.rmtree('009') # 删除目录
复制和移动(重命名)
- shutil.copytree('007', '008') # 复制目录
- shutil.copy('1.txt', '2.txt' ) # 复制文件
- shutil.move('008', '0080') # 移动文件和目录
- os.path.getsize('1.txt') # 获取文件大小
- os.path.isfile('1.txt') # 是否是文件
- os.stat('1.txt') # 文件的属性
- 取文件的后缀:os.path.splitext('C:\\study\\jupyter\\Module_3\\1.txt') 或者 filename[-3:] 或者 filename.endswith('pdf')
- re_filename = re.compile('(.*doc$)|(.*pdf$)|(.*txt$)')
- re_filename.match('1.txt')
应用实例:
# os.walk遍历目录,找到对应后缀名,并且大小小于1M的文件
import re re_filename = re.compile('(.*doc$)|(.*pdf$)|(.*txt$)') for root, dirs, files in os.walk('.'): for name in files: file = os.path.join(root, name) if re_filename.match(file) and os.path.getsize(file)<1024*1024: print(name)
zipfile压缩备份文件
# 压缩
1 import zipfile 2 my_zip = zipfile.ZipFile('de8ug.zip', 'w') 3 my_zip.write('51memo.py.ipynb', compress_type=zipfile.ZIP_DEFLATED) 4 my_zip.write('51memo_conf.py.ipynb', compress_type=zipfile.ZIP_DEFLATED) 5 my_zip.close()
1 # 查看 2 de8ug = zipfile.ZipFile('de8ug.zip') 3 de8ug.namelist() 4 de8ug.getinfo('51memo.py.ipynb') 5 de8ug.close()
1 解压 2 de = zipfile.ZipFile('de8ug-1.zip') 3 de.extractall('..') # 解压到上级目录 4 de.close()
应用实例:
#分类ipynb文件,打包压缩,重命名自动加1
import zipfile import os import os.path import re class MyZip: def __init__(self, keyword): self.keyword = keyword def zip_all(self, from_dir, target_name): '打包所有的文件' my_zip = zipfile.ZipFile(target_name, 'w') # for root, dirs, files in os.walk(from_dir): # for name in files: # filename = os.path.join(root, name) for item in self.zip_all_by_name(from_dir, self.keyword): my_zip.write(item, compress_type=zipfile.ZIP_DEFLATED) my_zip.close() def auto_name(self, source_name): '自动命名' # re_name = re.compile(r'-(\d+)') new_name = '1.zip' if source_name: # a-1.zip new_name = source_name.split('-')[0] + '-' + str(int(source_name.split('-')[1].split('.')[0])+1) + '.zip' # new_name = source_name.split('-')[0] + '-' + str(int(re_name.search('source_name').groups()[0])+1) + '.zip' return new_name def zip_all_by_name(self, from_dir, keyword): '文件筛选' file_list = [] for root, dirs, files in os.walk(from_dir): for name in files: file = os.path.join(root, name) if list(os.path.splitext(file))[1].split('.')[1] == keyword: file_list.append(file) return file_list def main(): myzip = MyZip('ipynb') base_dir = 'c:\\' target = os.path.join(base_dir, myzip.auto_name('a-1.zip')) from_dir = 'C:\\study\\jupyter\\Module_2' myzip.zip_all(from_dir, target) if __name__ == '__main__': main()
posted on 2018-08-02 10:48 guoqian205 阅读(143) 评论(0) 收藏 举报