python学习之路 - python的文件操作

一、python文件操作

1、文件的编码

a、概念

计算机只能识别0和1,所以需要用编码技术将内容翻译成0和1

b、编码分类
  • UTF-8
    除非有特殊要求,否则一般都用此编码
  • GBK
  • Big5

2、文件的读取

a、打开文件

open(name,mode,encoding=‘’)

  • name:要打开的目标文件名,可以包含文件具体路径
  • mode:设置打开文件的模式,包含只读(r)、写入(w)、追加(a)
  • encoding后面的字符串:编码格式,推荐使用UTF-8
  • 此方法读完文件后不会自动关闭文件
  • 如果文件不存在,会自动创建新的空文件
  • 写入(w)模式时,会将文件中内容全部重置。追加(a)模式时,会在文件原本内容后面添加
#只读模式打开1.txt文件
f = open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8')

结果:
欢迎大家
来到骨力
的
CSDN
这里可以学很多知识噢!

with open(name,mode,encoding=‘’) as f:

  • name:要打开的目标文件名,可以包含文件具体路径
  • mode:设置打开文件的模式,包含只读(r)、写入(w)、追加(a)
  • encoding后面的字符串:编码格式,推荐使用UTF-8
  • 此方法读完文件后会自动关闭文件
  • 如果文件不存在,会自动创建新的空文件
  • 写入(w)模式时,会将文件中内容全部重置。追加(a)模式时,会在文件原本内容后面添加
with open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8') as f:
    ff = f.readlines()
    print(ff)

结果:
['欢迎大家\n', '来到骨力\n', '的\n', 'CSDN\n', '这里可以学很多知识噢!']
a、读取文件字节

read(num)

  • num:表示文件中读取的数据长度,单位是字节,如果不传,默认为读取所有
  • 如果多次调用此方法,则后面的方法会从前面已读取的字节开始读取
#读取文件1.txt前13个字符内容
f = open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8')
print("第一次调用:",f.read(13))
print("第二次调用:",f.read(15))

结果:
第一次调用: 欢迎大家
来到骨力
的
C
第二次调用: SDN
这里可以学很多知识噢!
c、读取文件行

readlines()

  • 返回的是一个列表,每一行的数据为一个元素
  • 换行会自动转换成\n
f = open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8')
lines = f.readlines()
print(lines)

结果:
['欢迎大家\n', '来到骨力\n', '的\n', 'CSDN\n', '这里可以学很多知识噢!']

readline()

  • 一次读取一行,只会返回一行的数据
f = open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8')
line = f.readline()
print(line)

结果:
欢迎大家
d、for循环的读取
f = open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8')
for line in f:
    a = line.replace('\n', '')
    print(f"每一行的数据是:{a}")

结果为:
每一行的数据是:欢迎大家
每一行的数据是:来到骨力
每一行的数据是:的
每一行的数据是:CSDN
每一行的数据是:这里可以学很多知识噢!

3、文件的关闭

打开文件进行相关操作完毕后,需要调用close()方法,将文件关闭,否则程序会一直占用文件

  • 此方法内置了flush()的功能,flush()在后面有介绍
#打开文件后关闭文件
f = open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8')
f.close()

4、文件的写入

open(name,‘w’,encoding=‘utf-8’) #打开文件
f.write(字符串内容) #文件写入
f.flush #内容刷新

#创建新的文件2.txt,内容为"hello world"
f = open('C:/Users/HLY/Desktop/2.txt','w',encoding='utf-8')
f.write("hello world")  #写入内容
f.flush()   #刷新内容
f.close()   #关闭文件,close方法内置了flush的功能

写可以直接调用close()方法
f = open('C:/Users/HLY/Desktop/2.txt','w',encoding='utf-8')
f.write("hello world")  #写入内容
f.close()   #关闭文件,close方法内置了flush的功能

5、文件的追加

open(name,‘a’,encoding=‘utf-8’) #打开文件
f.write(字符串内容) #文件写入
f.flush #内容刷新

f = open('C:/Users/HLY/Desktop/2.txt','a',encoding='utf-8')
f.write("hello world")  #写入内容
f.flush()   #刷新内容
f.close()   #关闭文件,close方法内置了flush的功能

6、文件操作综合

a、案例一:读取字符个数

统计某文件中1的个数

方法一:
with open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8') as f:
	rr = f.read()
    print(rr.count("1"))

方法二:
num = 0
with open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8') as f:
    for line in f:
        split_list = line.split(" ")
        for ii in split_list:
            if ii.replace('\n','')=="1":
                num += 1
    print(f"包含1的个数有:{num}个")
b、案例二:复制文件
#将1.txt中的内容复制到2.txt中
f = open('C:/Users/HLY/Desktop/1.txt','r',encoding='utf-8')
f2 = open('C:/Users/HLY/Desktop/2.txt','w',encoding='utf-8')
for line in f:
    f2.write(line)
f2.close()
f.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值