美文网首页
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-文件

    文件操作介绍 文件的概念 文件的作用数据持久化 文件的打开与关闭 生活实例(文件的操作)打开work文档修改数据保...

  • 005-配置文件

  • 20180110初级英语Day55

    Coach Shane's E cubed 补:005- What's up this weekend? 补:00...

  • 逆向工程005-指针&MachO文件

    指针 指针自增、自减的结果,其实就是指针指向的数据类型宽度决定的! 指针加上或减去一个整数的结果,其实就是指针指向...

  • 【连载】云山乱-目录

    001-蟠龙山 002-龙涎草 003-比胆量 004-困山腹 005-出路显 006-救女婴

  • 005-方向

    The direction.of the tree is determined by the wind. A pe...

  • 005-恐慌

    拥有信仰的人在自己不安的时候,可以向神明祈求帮助,可惜我是无神论者。 我的恐慌来自于三个方面:家,工作和恋人。 首...

  • 005-无题

    第一天开始写文章的时候还大言不惭的说,按照自己的阅读速度,估计四天就可以读完【刻意学习】,现在只能对自己呵呵了。究...

  • 005-杨树

    记得有段时间,村里流行种树,家里有多余田地的人家,都去种杨树了,等到长大,就能买个好价钱。 我奶奶多聪...

  • [WXOPEN.Club出品] 微信小程序开发视频教程-005-

    005-第一章第五节-模块化 课程配套的源代码地址:https://github.com/ParryQiu/wxo...

网友评论

      本文标题:005-文件

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