python 写文件,15_python基础—文件操作

 2023-09-23 阅读 31 评论 0

摘要:文章目录目标一、文件的概念1.1 文件的概念和作用1.2 文件的存储方式(二进制)1.3 文本文件和二进制文件二、文件的基本操作2.1 文件操作步骤2.2 操作文件的函数/方法2.2.1 打开文件的方式2.2.2 文件对象方法2.2.2.1 写–write2.2.2.2 读—按行读取2.2.2.3 seek()—用来移动文

文章目录

  • 目标
  • 一、文件的概念
    • 1.1 文件的概念和作用
    • 1.2 文件的存储方式(二进制)
    • 1.3 文本文件和二进制文件
  • 二、文件的基本操作
    • 2.1 文件操作步骤
    • 2.2 操作文件的函数/方法
      • 2.2.1 打开文件的方式
      • 2.2.2 文件对象方法
        • 2.2.2.1 写–write
        • 2.2.2.2 读—按行读取
        • 2.2.2.3 seek()—用来移动文件指针
        • 2.2.2.4 关闭
  • 三、文件备份
    • 3.1 步骤
    • 3.2 代码实现
    • 3.3 思考
    • 3.4 复制文件
  • 四、文件和目录的管理操作
    • 4.1 文件操作
    • 4.2 目录(文件夹)操作
    • 4.3 应用案例
  • 五、总结

目标

  • 文件的概念
  • 文件的基本操作
    • 打开
    • 读写
    • 关闭
  • 文件备份
  • 文件和文件夹的操作

一、文件的概念

1.1 文件的概念和作用

  • 计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据
  • 长期存储设备包括:硬盘、U 盘、移动硬盘、光盘…

文件的作用

将数据长期保存下来,在需要的时候使用

思考:文件操作包含什么?

python 写文件?答:打开、关闭、读、写、复制…

思考:文件操作的的作用是什么?

答:读取内容、写入内容、备份内容…

总结:文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力

1.2 文件的存储方式(二进制)

  • 在计算机中,文件是以 二进制 的方式保存在磁盘上的

1.3 文本文件和二进制文件

  • 文本文件
    • 可以使用 文本编辑软件 查看
    • 本质上还是二进制文件
    • 例如:python 的源程序
  • 二进制文件
    • 保存的内容 不是给人直接阅读的,而是 提供给其他软件使用的
    • 例如:图片文件、音频文件、视频文件等等
    • 二进制文件不能使用 文本编辑软件 查看

二、文件的基本操作

2.1 文件操作步骤

计算机 中要操作文件的套路非常固定,一共包含三个步骤

  1. 打开文件
  2. 读、写文件
    • 将文件内容读入内存
    • 将内存内容写入文件
  3. 关闭文件

Python文件?注意:可以只打开和关闭文件,不进行任何读写操作。

2.2 操作文件的函数/方法

  • Python 中要操作文件需要记住 1 个函数和 3 个方法

  • open 函数的第一个参数是要打开的文件名(文件名区分大小写)

    • 如果文件 存在,返回 文件操作对象
    • 如果文件 不存在,会 抛出异常
  • read 方法可以一次性 读入返回 文件的 所有内容

  • close 方法负责 关闭文件

    • 如果 忘记关闭文件会造成系统资源消耗,而且会影响到后续对文件的访问
  • python保存文件、注意read 方法执行后,会把 文件指针 移动到 文件的末尾

  • 提示

    • 在开发中,通常会先编写 打开关闭 的代码,再编写中间针对文件的 读/写 操作!
序号函数/方法说明
01open打开文件,并且返回文件操作对象
02read将文件内容读取到内存
03write将指定内容写入文件
04close关闭文件
  • open 函数负责打开文件,并且返回文件对象
  • read/write/close 三个方法都需要通过 文件对象 来调用

2.2.1 打开文件的方式

  • open 函数默认以 只读方式 打开文件,并且返回文件对象

语法如下:

f = open("文件名", "访问方式")
访问方式描述
r只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

提示

  • 频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读只写 的方式来操作文件

  • python文件的后缀名,示例

f = open('test.txt', 'w')

注意:此时的fopen函数的文件对象。

2.2.2 文件对象方法

2.2.2.1 写–write

  • 语法
文件对象.write('内容')
  • 体验
# 1. 打开文件
f = open('test.txt', 'w')# 2.文件写入
f.write('hello world')# 3. 关闭文件
f.close()

注意:

  1. wa模式:如果文件不存在则创建该文件;如果文件存在,w模式先清空再写入,a模式直接末尾追加。
  2. r模式:如果文件不存在则报错。

2.2.2.2 读—按行读取

  • read()
    • read 方法默认会把文件的 所有内容 一次性读取到内存
    • 如果文件太大,对内存的占用会非常严重
    • 注意read 方法执行后,会把 文件指针 移动到 文件的末尾
文件对象.read(num)

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

# 1. 打开 - 文件名需要注意大小写
file = open("README")# 2. 读取
text = file.read()
print(text)# 3. 关闭
file.close()
  • readline()

    • python读取csv文件、readline 方法可以一次读取一行内容

    • 方法执行后,会把 文件指针 移动到下一行,准备再次读取。

f = open('test.txt')content = f.readline()
print(f'第一行:{content}')content = f.readline()
print(f'第二行:{content}')# 关闭文件
f.close()

第一行:hello world

第二行:abcdefg

读取大文件的正确姿势

# 打开文件
file = open("README")while True:# 读取一行内容text = file.readline()# 判断是否读到内容if not text:break# 每读取一行的末尾已经有了一个 `\n`print(text, end="")# 关闭文件
file.close()
  • readlines( )
    • readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
f = open('test.txt')
content = f.readlines()# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']
print(content)# 关闭文件
f.close()

python编程,文件指针(知道)

  • 文件指针 标记 从哪个位置开始读取数据
  • 第一次打开 文件时,通常 文件指针会指向文件的开始位置
  • 当执行了 read 方法后,文件指针 会移动到 读取内容的末尾
    • 默认情况下会移动到 文件末尾

思考

  • 如果执行了一次 read 方法,读取了所有内容,那么再次调用 read 方法,还能够获得到内容吗?

答案

  • 不能
  • 第一次读取之后,文件指针移动到了文件末尾,再次调用不会读取到任何的内容

2.2.2.3 seek()—用来移动文件指针

作用:用来移动文件指针。

语法如下:

文件对象.seek(偏移量, 起始位置)

python3,起始位置:

  • 0:文件开头
  • 1:当前位置
  • 2:文件结尾

2.2.2.4 关闭

文件对象.close()

三、文件备份

需求:用户输入当前目录下任意文件名,程序完成对该文件的备份功能(备份文件名为xx[备份]后缀,例如:test[备份].txt)。

3.1 步骤

  1. 接收用户输入的文件名
  2. 规划备份文件名
  3. 备份文件写入数据

3.2 代码实现

  1. 接收用户输入目标文件名
old_name = input('请输入您要备份的文件名:')
  1. 规划备份文件名

    2.1 提取目标文件后缀

    2.2 组织备份的文件名,xx[备份]后缀

# 2.1 提取文件后缀点的下标
index = old_name.rfind('.')# print(index)  # 后缀中.的下标# print(old_name[:index])  # 源文件名(无后缀)# 2.2 组织新文件名 旧文件名 + [备份] + 后缀
# [:index]切片,从开始到.之前的索引值
new_name = old_name[:index] + '[备份]' + old_name[index:]# 打印新文件名(带后缀)
# print(new_name)
  1. python文件怎么运行?备份文件写入数据

    3.1 打开源文件 和 备份文件

    3.2 将源文件数据写入备份文件

    3.3 关闭文件

# 3.1 打开文件
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')# 3.2 将源文件数据写入备份文件
# 如果不确定目标文件大小,循环读取写入,当读取出来的数据没有了终止循环
while True:con = old_f.read(1024)if len(con) == 0:breaknew_f.write(con)# 3.3 关闭文件
old_f.close()
new_f.close()

3.3 思考

如果用户输入.txt,这是一个无效文件,程序如何更改才能限制只有有效的文件名才能备份?

Python程序文件?答:添加条件判断即可。

old_name = input('请输入您要备份的文件名:')index = old_name.rfind('.')if index > 0:postfix = old_name[index:]new_name = old_name[:index] + '[备份]' + postfixold_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')while True:con = old_f.read(1024)if len(con) == 0:breaknew_f.write(con)old_f.close()
new_f.close()

3.4 复制文件

小文件复制

  • 打开一个已有文件,读取完整内容,并写入到另外一个文件
# 1. 打开文件
file_read = open("README")
file_write = open("README[复件]", "w")# 2. 读取并写入文件
text = file_read.read()
file_write.write(text)# 3. 关闭文件
file_read.close()
file_write.close()

大文件复制

  • 打开一个已有文件,逐行读取内容,并顺序写入到另外一个文件
# 1. 打开文件
file_read = open("README")
file_write = open("README[复件]", "w")# 2. 读取并写入文件
while True:# 每次读取一行text = file_read.readline()# 判断是否读取到内容if not text:breakfile_write.write(text)# 3. 关闭文件
file_read.close()
file_write.close()

四、文件和目录的管理操作

  • 终端 / 文件浏览器、 中可以执行常规的 文件 / 目录 管理操作,例如:

    • 创建、重命名、删除、改变路径、查看目录内容、……
  • Python 中,如果希望通过程序实现上述功能,需要导入 os 模块。具体步骤如下:

  1. 导入os模块
import os
  1. 使用os模块相关功能
os.函数名()

4.1 文件操作

序号方法名说明示例
01rename重命名文件os.rename(源文件名, 目标文件名)
02remove删除文件os.remove(文件名)

4.2 目录(文件夹)操作

序号方法名说明示例
01listdir获取目录列表os.listdir(目录名)
02mkdir创建目录(文件夹)os.mkdir(目录名)
03rmdir删除目录os.rmdir(目录名)
04getcwd获取当前目录(目录路径)os.getcwd()
05chdir修改工作目录路径os.chdir(目标目录)
06path.isdir判断是否是文件os.path.isdir(文件路径)

python怎么打开文件?提示:文件或者目录操作都支持 相对路径绝对路径

# 需求:在aa里面创建bb文件夹: 1. 切换目录到aa,2创建bb
import os
os.chdir('aa')
os.mkdir('bb')

4.3 应用案例

需求:批量修改文件名,既可添加指定字符串,又能删除指定字符串。

  • 步骤
  1. 设置添加删除字符串的的标识
  2. 获取指定目录的所有文件
  3. 将原有文件名添加/删除指定字符串,构造新名字
  4. os.rename()重命名
  • 代码
import os# 设置重命名标识:如果为1则添加指定字符,flag取值为2则删除指定字符
flag = 1# 获取指定目录
dir_name = './'# 获取指定目录的文件列表
file_list = os.listdir(dir_name)
# print(file_list)# 遍历文件列表内的文件
for name in file_list:# 添加指定字符if flag == 1:new_name = 'Python-' + name# 删除指定字符elif flag == 2:num = len('Python-')     # 7new_name = name[num:]# 打印新文件名,测试程序正确性print(new_name)# 重命名os.rename(dir_name+name, dir_name+new_name)

五、总结

  • 文件操作步骤

    • 打开
    文件对象 = open(目标文件, 访问模式)
    
    • 操作

      文件对象.read()
      文件对象.readlines()
      文件对象.readline()
      
      文件对象.write()
      
      • seek()
    • 关闭

    文件对象.close()
    
  • python文件读写方法有哪些。主访问模式

    • w:写,文件不存在则新建该文件
    • r:读,文件不存在则报错
    • a:追加
  • 文件和文件夹操作

    • 重命名:os.rename()
    • 获取当前目录:os.getcwd()
    • 获取目录列表:os.listdir()

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/87773.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息