文件的读取

open(name,mode,encoding)
name:是打开目标文件名的字符串(可以包含文件所在路径)
mode:设置打开文件的模式(访问模式):只读r、只写w(如果没有文件会重新创建)、追加等
encoding:编码格式(推荐使用UTF-8)

1、读操作

read()方法
文件名.read(num)
num表示要从文件中读取的数据长度(单位是字节),如果没有传入num,就表示读取文件中所有数据

readlines()方法
将文件中的内容进行一次性读取,并且返回的是一个列表,每一行的数据为一个元素

read 和readline 会续接上一次读取内容

readline()方法:一次读取一行

for循环读取文件行

 for line in open('python.txt','r')
    print(line)
 #每一个line临时变量,就记录了文件的一行数据

close()关闭文件对象
f.close()

with open语法

with open('python.txt','r') as f:
     f.readlines()
#可以在操作完成后自动关闭close文件,避免遗忘close方法
#通过在with open的语句块中对文件进行操作

点击查看代码
单词计数
#我的思路
with open('D:/word.txt','r',encoding='UTF-8') as f:
  print(f'itheima出现的次数为{f.read().count ('itheima')}次')

#老师思路
#打开文件,以读取模式打开
f=open('D:/word.txt','r',encoding='UTF-8')
#方式1:读取全部内容,通过字符串count方法统计iteima单词数量
# content=f.read()
# count=content.count('itheima')
# print(f'itheima在文件中出现了:{count}次')

#方式2:读取内容,一行一行读取
count=0 #使用count变量 来累计itheima出现的次数
for line in f:
    line=line.strip() #去除开头和结尾的空格以及换行
    words=line.split(' ')
    for word in words:
        if word=='itheima':
            count+=1 #如果单词是itheima,就进行数量的累加加1
#判断单词出现次数并累计
print(f'itheima出现次数是{count}')
#关闭文件
f.close()

2、写操作

#1、打开文件,通过w模式打开
f=open('python.txt','w')
#2、文件写入
f.write('字符串')
#3、内容刷新
f.flush()

直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
当调用flush的时候,内容会真正写入文件

点击查看代码
文件的写入
# f=open('D:/test.txt','w',encoding='UTF-8')
# #write写入
# f.write('Hello World') #内容写入到内存中
# #flush刷新
# #f.flush() #将内存中积攒的内容写入硬盘中
# #close关闭
# f.close() #close方法,内置了flush功能
f=open('D:/test.txt','w',encoding='UTF-8')
#write写入,flush刷新
f.write('黑马程序员')
#close关闭
f.close()

3、追加

#1、打开文件,通过a模式打开
f=open('python.txt','a')
#2、文件写入
f.write('字符串')
#3、内容刷新
f.flush()
点击查看代码
文件的追加
#打开文件,不存在的文件
# f=open('D:/test.txt','a',encoding='UTF-8')
# #write写入
# f.write('黑马程序员')
# #flush刷新
# f.flush()
# #close关闭
# f.close()
#打开一个存在的文件
f=open('D:/test.txt','a',encoding='UTF-8')
#write写入,flush刷新
f.write('学Python的最佳选择')
f.write('\n月薪过万')
#close关闭
f.close()

点击查看代码
文件备份
# #我的思路
# #读取文件
# f=open('D:/bill.txt','r',encoding='UTF-8')
# for line in f:
#     if '测试' not in line:
#       f1=open('D:/bill.txt.bak','a',encoding='UTF-8')
#       f1.write(line)
#       f1.close()
# #老师思路
#打开文件得到文件对象,准备读取
fr=open('D:/bill.txt','r',encoding='UTF-8')
##打开文件得到文件对象,准备写入
fw=open('D:/bill.txt.bak','w',encoding='UTF-8')
#for循环读取文件
for line in fr:
    line=line.strip()

    #判断内容,将满足的内容写出
    if line.split(',')[-1]=='测试':
        continue
    #将内容写出去
    fw.write(line)
    #由于前面对内容进行了strip()的操作,所以要手动的写出换行符
    fw.write('\n')

#close2个文件对象
fr.close()
fw.close()