• 【python学习笔记】文本文件操作之os模块


    1、获取帮助文档

    help(os)
    

    2、获取当前文件所在目录

        filePath = os.getcwd()
        print(filePath)
    C:UserszzPycharmProjectsOJsimple

    3、连接目录与文件名或目录

        os_testPath = os.path.join(filePath, 'practice.py')
        print(os_testPath)
    C:UserszzPycharmProjectsOJsimplepractice.py

    4、返回文件路径,返回path的上一层

        fileDir = os.path.dirname(r'UserszzPycharmProjectsOJsimple')
        print(fileDir)
        UserszzPycharmProjectsOJ
        
        fileDir = os.path.dirname(r'UserszzPycharmProjectsOJsimplepractice.py')
        print(fileDir)
        UserszzPycharmProjectsOJsimple
    

    5、返回文件名,不做文件判断,默认返回路径中的根节点

        dir_basename = os.path.basename(r'UserszzPycharmProjectsOJsimple')
        print(dir_basename)
        simple
    
        dir_basename = os.path.basename(r'UserszzPycharmProjectsOJsimplepractice.py')
        print(dir_basename)
        practice.py
    

    6、分隔文件名与目录,返回元组

        fileSplit = os.path.split(r'UserszzPycharmProjectsOJsimplepractice.py')
        print(fileSplit)
        fileSplit = os.path.split(r'UserszzPycharmProjectsOJsimple')
        print(fileSplit)
    ('\Users\zz\PycharmProjects\OJ\simple', 'practice.py') ('\Users\zz\PycharmProjects\OJ', 'simple')

    7、规范path字符串形式

       normPath = os.path.normpath(r'Users/zzPycharmProjectsOJsimplepractice.py')
       print(normPath)
    UserszzPycharmProjectsOJsimplepractice.py

    8、判断该路径所指向的目录 文件是否存在,或者要知道其是一个目录还是一个文件

        # 判断是不是文件
        isFile = os.path.isfile(r'C:UserszzPycharmProjectsOJsimplepractice.py')
        print(isFile)
        # 文件不存在
        isFile = os.path.isfile(r'C:UserszzPycharmProjectsOJsimplepractic.py')
        print(isFile)
    
        # 判断是不是目录
        isDir = os.path.isdir(r'C:UserszzPycharmProjectsOJsimple')
        print(isDir)
        # 目录不存在
        isDir = os.path.isdir(r'C:UserszzPycharmProject')
        print(isDir)
    
        # 判断文件或目录是否存在
        isExist =  os.path.exists(r'C:UserszzPycharmProjectsOJsimplepractic.py')
        print(isExist)
    
     True
     False
     True
     False
     False
    

    9、列出文件夹下所有文件名

        list_dir = os.listdir(r'C:Usersz00561563PycharmProjectsOJsimple')
        print(list_dir)
        # 输出文件夹下的所有文件名,并判断哪些是文件
        for i in list_dir:
            print(i, os.path.isfile(i))
    
    ['.idea', '01.py', '02.py', '03.py', '04.py', '114.py']
    .idea False
    01.py True
    02.py True
    03.py True
    04.py True
    114.py True
    

    10、目录、文件的创建删除

        # 创建目录
        os.makedirs(r'C:Usersz00561563PycharmProjectsOJsimple1013')
        # 删除目录
        os.rmdir(r'C:Usersz00561563PycharmProjectsOJsimple1013')
    
        # 删除文件
        os.remove(r'C:Usersz00561563PycharmProjectsOJsimpled.csv')
        os.remove('c.csv')
    

    11、获取文件或目录大小、字节

        size = os.path.getsize(r'C:Usersz00561563PycharmProjectsOJsimplepractice.py')
        print(size)
    
    8782

    12、其他一些常用函数

        # 当前正在使用的平台,window nt
        print(os.name)
        # 执行命令 执行成功返回0
        print(os.system('dir practice.py'))
        # 执行重命名命令
        print(os.system('move d.txt 2.txt'))
    

    13、获取所有目录及文件名的fullname

        a = os.walk(r'C:Usersz00561563PycharmProjectsOJsimple', topdown=False)
        # 遍历路径下的所有目录和文件,返回迭代对象 存在元组里 包含路径、 根路径 文件夹 文件
        '''
        ('C:\Users\zz\PycharmProjects\OJ\simple\.idea\inspectionProfiles', [], ['profiles_settings.xml']),
        ('C:\Users\zz\PycharmProjects\OJ\simple\.idea', ['inspectionProfiles'], ['.gitignore', 'misc.xml', 'modules.xml', 'simple.iml', 'workspace.xml'])
        ('C:\Users\zz\PycharmProjects\OJ\simple\__pycache__', [], ['list.cpython-38.pyc', 're.cpython-38.pyc'])
        '''
        b = list(a)
        print(b)
        for root, dirs, files in os.walk(r'C:UserszzPycharmProjectsOJsimple', topdown=False):
            # 遍历文件
            for name in files:
                print(os.path.join(root, name))
            # 遍历目录
            for name in dirs:
                print(os.path.join(root, name))
    C:UserszzPycharmProjectsOJsimple.ideainspectionProfilesprofiles_settings.xml
    C:UserszzPycharmProjectsOJsimple.idea.gitignore
    C:UserszzPycharmProjectsOJsimple.ideamisc.xml
    C:UserszzPycharmProjectsOJsimple.ideamodules.xml
    C:UserszzPycharmProjectsOJsimple.ideasimple.iml
    C:UserszzPycharmProjectsOJsimple.ideaworkspace.xml
    C:UserszzPycharmProjectsOJsimple.ideainspectionProfiles
    C:UserszzPycharmProjectsOJsimple\__pycache__list.cpython-38.pyc
    

      

    练习:通过os模块实现文件查找小工具

    文件查找小工具
    输入: 指定目录、需要查找的文件名
    输出:查找到的文件名全路径
    功能解析:
    1、给出指定目录,能得到所有的文件列表;
    2、通过命令行参数,指定要查找的文件名或文件名的一部分;
    3、查找第一步中获取的文件列表,找到要查找的文件名并将文件名打印出来。

    设计思路:
    面向对象
    类 Finder
    方法1:提取指定目录下的所有文件,包含子目录中的文件
    方法2:根据查找文件名过滤文件列表,得到要查找的文件列表
    方法3:从文件列表中查找目标文件名
    class Finder():
    
        def __init__(self, path, name):
            self.filePath = path
            self.fileName = name
            self.allFileList = []
            self.dstFileList = []
            self.filecnt = 0
    
        # 获取指定路径下的所有文件列表,返回allFileList
        def GetAllFileList(self, filepath):
            for root, dirs, files in os.walk(filepath):
                for name in files:
                    fullname = os.path.join(root, name)
                    self.allFileList.append(fullname)
            print(self.allFileList)
    
        # 步骤1中获取到的文件列表中查找目标文件,返回dstFileList
        def GetDstFileList(self, filelist, dstname):
            for i in filelist:
                filename = os.path.basename(i)  # 全路径中拆出文件名
                if filename.upper().find(dstname.upper()) >= 0: # find返回查找字符串的起始索引,找不到返回-1
                    self.dstFileList.append(i)
            print(self.dstFileList)
    
        # 执行方法,输出查找到的文件
        def DoFind(self):
            self.GetAllFileList(self.filePath)
            self.GetDstFileList(self.allFileList, self.fileName)
            for i in self.dstFileList:
                self.filecnt += 1
                print(i)
            print('共找到{}个目标文件'.format(self.filecnt))
    
    if __name__ == '__main__':
        fd = Finder(r'C:UserszzPycharmProjectsOJsimple', 'f.csv')
        # fd = Finder(sys.argv[1], sys.argv[2]) #在命令行中运行程序,接收命令行参数
        fd.DoFind()
    
    C:UserszzPycharmProjectsOJsimplef.csv
    C:UserszzPycharmProjectsOJsimplegf.csv
    共找到2个目标文件
    

      




  • 相关阅读:
    简单三步给MM美白
    人物扣图抽出法
    Photoshop用抽出法抠婚纱图技巧实例集合
    十余种漂亮照片边框简单制作技巧
    如何安装knockout 2.0
    色阶去水印法
    PS合成古典的水墨舞者
    在photoshop中,从1寸到24寸的大小是多少
    常用Smarty变量操作符
    discuz代码分析一 从common.inc.php开始
  • 原文地址:https://www.cnblogs.com/zhaoyujiao/p/15402300.html
Copyright © 2020-2023  润新知