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)    收藏  举报

导航