【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个目标文件

  




原文地址:https://www.cnblogs.com/zhaoyujiao/p/15402300.html