文件操作

1.三元运算

又称三目运算,是对简单的条件语句的简写

if 条件成立:
    value = 1 
else:
    value = 2
# 改写为三元运算
value = 1 if 条件成立 else 2

2.文件的读操作

f = open(file="filename",mode ="r",encoding="utf-8") #相当于打开文本编辑器
data = f.read() # 读取,并把内容存于data这个变量中
f.close() # 关闭

注意:encoding = ''" 这一项如果不写,默认为utf-8。文件中字符的编码格式应于读到内存中的编码格式相同.

3. 以二进制模式打开一个文本

当读取一个图片,视频或进行网络传输文本时,要以二进制模式读取一个文件

f = open(file='filename',mode='rb')

mode = 'rb', 没有encoding= 这一项

4. 循环方式读取文件内容

f = open('text2.txt','r',encoding='utf-8')
for line in f:
    print(line) # print自带一个换行, 所以有两个换行

结果为:

内容line1

内容line2

内容line3

这种方式和read方式的区别:前者一行一行读取到内存,而read是把整个文件加载到内存

5. 写操作

f = open('text2.txt','w',encoding='utf-8')
f.write("hello\n")
f.write("hello2")

注意: w模式新创建了一个文件,在新创建的文件中进行写操作,所以如果文件名和已存在的文件名相同,则会覆盖掉原来的数据

写多行时,要注意写/n换行

追加操作

f = open('text2.txt','a',encoding='utf-8')

6. 混合操作

r+ 模式:读写模式。 

w+模式:写读模式。先以写模式创建一个新的文件,再进行读或写操作

注意: 两种模式不一样。

    注意光标的位置:read()读完之后,光标移至最后,若再进行read(),则不会读取任何内容

7. 其他操作

f.flush() 强制把内存buffer里刷新到硬盘

在关闭文件之前,所修改的数据存在内存,如果写入很重要的数据,应使用flush强制写入硬盘,防止意味发生导致数据丢失。

f.readline() 读一行

f.tell() 返回当前光标位置

f.seek() 把光标移到指定位置

注意:f.read() 和 f.seek() 里传参数。但前者读的是字符,后者读的是字节

f.truncate() 从当前光标位置截断,若传入参数,则表示从开头截断多少位 

8. 修改文件

 两种方式:占硬盘和占内存

占内存: 和word一样,先把文件内容全部加载到内存,在内存中修改完再保存回硬盘

占硬盘:创建一个新的文件,一行一行读取到内存,改完一行保存回硬盘,再处理下一行。不做修改的行写入新文件,做修改的处理完后写入新文件。 

代码如下:

占内存:

f = open("text.txt",mode='r',encoding = 'utf-8')
f_new = open("text_new.txt",mode='w',encoding='utf-8')
str_old = 'old'
str_new = 'new'
for line in f:
    if str_old in line:
        line = line.replace(str_old,str_new)
    f_new.write(line)
f.close()
f_new.close()

占硬盘:

# 把斯拉克换成圣堂刺客 用占内存模式
f = open("text2.txt",mode='r+',encoding='utf-8')
data = f.read()
data = data.replace("幻影刺客","肉山宝")
f.seek(0)  #光标移到最初位置,开始修改
f.truncate(0) #把所有文本截断
f.write(data)
f.close()

如果修改的字符字数不一样,会出现乱码,所以在替换之前,必须先把文本给截断。

转载于:https://www.cnblogs.com/dempsey888/p/9362445.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值