美文网首页
005-文件

005-文件

作者: 痞子_4ae7 | 来源:发表于2020-05-14 11:48 被阅读0次

    文件操作介绍

    • 文件的概念
    • 文件的作用
      • 数据持久化

    文件的打开与关闭

    • 生活实例(文件的操作)

      • 打开work文档
      • 修改数据
      • 保存文件
      • 关闭word
      python编程中,操作文件也一样
      打开文件/创建文件
      读写文件
      关闭文件
      
    • 打开文件

      • 函数语法
      open(文件名,访问方式)
      f = open('123.txt','w')
      
      • 作用
        • 打开已经存在的文件,或者创建一个新的文件
    • 常用访问方式:

    r   :只读 指向文件头   默认方式
    w   :只写 已经存在会覆盖,没有则创建新的
    a   :追加 存在,指向文件为,没有则创建新的
    r+  :读写 指向文件的开头
    w+  :读写 已经存在会覆盖,没有创建新的
    a+  :读写   文件已存在,则指向文件尾部,
    进行追加内容,没有则创建新文件
    
    • 关闭文件
      • 函数语法
      文件.close()
      f = open('123.txt','a+')
      f.close()
      

    文件的读写

    • 写数据

      • 语法
      使用函数write('要写入的内容')
      
      • 案例
      f=open('123.txt','w')
      f.write('Hello World!')
      f.close()
      
      • 练习
      将你最喜欢的一首古诗写入到指定文件中
      循环写
      
    • 读数据(read)

      • read(num)
      从指定的文件中读取长度为num的数据
      如果没有给num具体值,则读取所有(以
      字符串的形式返回)
      
      • 案例
      def readMethod():
          f = open('125.txt','r')
          result = f.read()
          # str 类型
          print(type(result))
          print(result)
          f.close()
      
    • 读数据(readLines)

    def readMethod1():
        f = open('125.txt','r')
        result = f.read()
    # list 类型
        print(type(result))
        print(result)
        f.close()
    
    • 读数据(readLine)
    f = open('125.txt','r')
    #读取一个第一行字符串出来
    result = f.readline()
    # str 类型
    print(type(result))
    print(result)
    f.close()
    

    自定义文件复制工具(讲解思路)

    • 思路讲解
      • 打开源文件,判断源文件是否有效,有效进行后续操作
      • 新文件名字的生成 旧文件名+[复件]+.后缀(用到查找rfind,以及切片操作)
      • 开始复制文件(1. 整体复制 2.循环逐行复制)
      • 关闭文件
    • 代码
    # 复制文件方法,旧文件[附件].后缀
    def copyFile2(srcFileName):
        oldFileName = srcFileName
        # 先判断文件是否存在
        f = open(oldFileName, 'r')
        print(type(f))
        # 如果存在进行后续操作
        if f:
            # 截取出文件名字
            index= oldFileName.rfind('.')
            # 截取出文件后缀
            suffix = oldFileName[index:]
            # 新文件名为
            newFileName = oldFileName[:index]+'[复件]'+suffix
            newFile = open(newFileName,'w')
            content = f.read()
            newFile.write(content)
            newFile.close()
        f.close()
    copyFile2('125.txt')
    

    文件的定位读写

    • 获取当前的位置
      • 方法
      文件名.tell()
      可以获取文件指针当前在文件中的位置
      
      • 用法
      f = open('125.txt','r')
      content = f.read(3)
      position = f.tell()
      print("当前的位置为:%d"%position)
      content = f.read(4)
      position = f.tell()
      print("当前的位置为:%d"%position)
      
    • 定位到某个位置

      • 方法
      seek(offset,from)
      offset:偏移位置
      from:三个值
      0:文件头
      1:当前位置
      2:文件位
      
      • 用法
    例:从文件头跳过2个字节,复制3个字节
    f = open('125.txt','r')
    # 从文件头开始跳过2个字节
    f.seek(2,0)
    # 获取当前位置
    position = f.tell()
    print("当前位置:%d"%position)
    # 读取2个字节
    content = f.read(2)
    print(content)
    f.close()
    
    例:从文件尾部取2个字节(如果是从尾部进行重定位的话,需要以二进制形式打开文件)
    # 从文件尾读取2个字节(尾部操作,需要使用二进制的形式打开   b)
    f = open('125.txt', 'rb')
    # 从尾部往前偏移2个字节
    f.seek(-2, 2)
    content = f.read()
    print(content)
    

    文件的重命名与删除

    OS模块中的有对文件进行重命名以及删除的方法

    • 文件重命名

      • 方法
      rename('需要修改的文件名','新的文件名')
      
      • 用法
      #注意:要修改的文件一定要保证没有被其他占用
      import os
      os.rename('125.txt','127.txt')
      
    • 文件的删除

      • 方法
      remove(待删除文件的名字)
      
      • 用法
      import os
      remove('126.txt')
      

    文件的相关操作

    同样需要导入os模块

    • 创建文件夹

      • 方法
      mkdir()
      
      • 用法
      import os
      os.mkdir()
      
    • 获取当前目录

      • 方法
      getcwd()
      
      • 用法
      import os
      os.getcwd()
      
    • 改变默认目录

      • 方法
      chdir()
      
      • 用法
      import os
      os.chdir("要修改到的默认目录")
      
    • 获取目录列表

      • 方法
      listdir('指定文件夹')
      
      • 用法
      import os
      os.listdir('d:/2018教学')
      
    • 删除文件夹

      • 方法
      rmdir('文件夹路径')
      
      • 用法
      import os
      os.rmdir('陈独秀文件夹')
      

    代码行数统计器

    • 统计某个文件中的代码行数,忽略注释
    # 统计一个xxx.py中所有的代码
    def getNumberOfCodeLines(filename):
        count = 0
    # 后边的encoding='utf-8' 解决中文读取问题
        f = open(filename, 'r', encoding='utf-8')
        if f:
            # 如果文件存在,开始统计
            content = f.readline()
            while content != '':
                if not content.startswith("#"):
                    count += 1
                content = f.readline()
        return count
    
    • 打印一个文件夹中所有的文件名(递归解决)
    def showAllFilesInDir(dirName):
        listfiles = os.listdir(dirName)
        for file in listfiles:
            # 文件路径为 文件夹名字+文件名
            newpath = dirpath+"/"+ file
            # 如果是文件夹
            if os.path.isdir(newpath):
                # 递归调用自己
                showAllFilesInDir(newpath)
            elif os.path.isfile(newpath):
                print(newpath)
    

    课后练习

    图书管理系统(数据持久化版,知识拓展)

    相关文章

      网友评论

          本文标题:005-文件

          本文链接:https://www.haomeiwen.com/subject/zsftohtx.html