Python学习(四)文件操作

文件操作

想想我们平常对文件的基本操作,大概可以分为三个步骤(简称文件操作三步走):
① 打开文件
② 读写文件
③ 关闭文件
注意:可以只打开和关闭文件,不进行任何读写

在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下

open(name, mode,encoding)

name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读、写入、追加等
encoding:编码格式(推荐使用UTF-8)

示例代码:

f = open('d:/hello.txt', 'r', encoding='UTF-8')

#encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定

读操作相关方法

read()方法

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

readlines()方法

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

观察上图代码,先read4个字符后(你好加回车符加世正好四个字符),再read全部内容,却只有界!!!这是因为read的时候,指针会定位到上一个read的结尾处(原理暂不清楚)

readline()方法

功能:每次读取一行

因为指针的存在,每调用一次,就会读取一行

for循环读取文件行

close()关闭文件对象

最后通过close,关闭文件对象,也就是关闭对文件的占用

如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用

with open()方法

with open('d:/hello.txt', 'r', encoding='UTF-8') as f:
    print(f.read())

通过在with open的语句块中对文件进行操作,可以在操作完成后自动关闭close文件,避免遗忘掉close方法。

总结:

练习

统计python在文本中出现的次数(line.strip()是为了去除行末的换行符)

写操作相关方法

# 1.打开文件
f = open("D:/python.txt", "w")
# 2.文件写入
f.write("hello python!")
# 3.内容刷新
f.flush()

注意:
直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
当调用flush的时候,内容会真正写入文件
这样做是避免频繁的操作硬盘,导致效率下降(一堆,一次性写磁盘)

但是自己测试,不调用flush也可写入。

1.写入文件使用open函数的”w”模式进行写入
2.写入的方法有:

  • wirte(),写入内容
  • flush(),刷新内容到硬盘中

3.注意事项:

  • w模式,文件不存在,会创建新文件
  • w模式,文件存在,会清空原有内容
  • close()方法,带有flush()方法的功能

追加写入

将w换成a即可,其他用法同w模式

# 1.打开文件
f = open("D:/nihao.txt", "a")
# 2.文件写入
f.write("我是追加的内容")

练习

读取该文件,将正式的写入到一个新文件

# 打开文件得到文件对象。谁备读取
fr = open("D:/a.txt", "r", encoding="UTF-8")  
# 打开文件得到文件对象。谁备写入
fw = open("D:/a.txt.bak", "w", encoding="UTF-8")
# for箭环读取文件
for line in fr:
    line = line.strip()   # 去除前后空格和换行符
    # 判断内容、将满足的内容写出
    if line.split(",")[4] == "测试":
        continue  # continue进入下一次新坏,这一次后面的内容就跳过了
    # 将内容写出去
    fw.write(line)
    # 由于的面对内容进行了strip()的操作、所以要手动的写出换行符
    fw.write("\n")
# close2个文件对象
fr.close()
fw.close()
# 写出文件调用close()会自动flush()

结果

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值