python文字处理_Python 文本处理

Python 文本处理

一、文件处理流程

打开文件,得到文件句柄并赋值给一个变量

通过句柄对文件进行操作

关闭文件

r:模式,默认模式,文件不存在则报错

w:模式,文件不存在则创建,文件存在则覆盖

a:模式,文件不存在则创建,文件存在则不会覆盖,写内容会以追加的方式写(写日志文件的时候常用),追加模式是一种特殊的写模式

f=open('c.txt','rb')

# print(f.read())

print(f.read().decode())

f=open('d.txt','wb')

f.write('啦啦啦'.encode('utf-8'))

f.close()

二、文本基本操作

打开文件

文件句柄=open('文件路径','模式')

打开文件时,需要指定文件路径和以什么方式打开文件。

打开文件的模式有:

r,只读模式【默认模式;文件必须存在,不存在则抛出异常】

w,只写模式【不可读;不存在则创建,存在则清空内容】

x,只写模式【不可读;不存在则创建,存在则报错】

a,追加模式【可读; 不存在则创建,存在则只追加内容】

#只读模式

f=open(r'c.txt',encoding='utf-8')

# print('====>1',f.read())

# print('====>2',f.read())

# print(f.readable())

# print(f.readline(),end='')

# print(f.readline())

# print("="*20)

# print(f.read())

# print(f.readlines())

# f.close()

#写模式:文件不存在则创建,文件存在则覆盖原有的

# f=open("new.py",'w',encoding='utf-8')

# f.write('1111111111\n')

# f.writelines(['2222\n','2222548\n','978646\n'])

# f.close()

# 追加模式:文件不存在则创建,文件存在不会覆盖,写内容是追加的方式写

# f=open('new.py','a',encoding='utf-8')

# f.write('nishishui\n')

# f.writelines(['aa\n','bb\n'])

# f.close()

"+" 表示可以同时读写某个文件

r+,读写【可读,可写】

w+,写读【可读,可写】

x+,写读【可读,可写】

a+,写读【可读,可写】

"b"表示以字节的方式操作

rb 或 r+b

wb 或 w+b

xb 或 w+b

ab 或 a+b

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

练习,利用b模式,编写一个cp工具,要求如下:

1.既可以拷贝文本又可以拷贝视频,图片等文件

# b模式

f=open('1.jpg','rb')

data=f.read()

# print(data)

f=open('2.jpg','wb')

f.write(data)

print(data)

三、上下文管理

1. with open('a.txt','w') as f:

pass

2.with open('a.txt','r') as read_f,open('b.txt','w') as write_f:

data=read_f.read()

write_f.write(data)

四、文件修改

ContractedBlock.gif

ExpandedBlockStart.gif

1 importos2 with open('a.txt','r',encoding='utf-8') as read_f,\3 open('a.txt.swap','w',encoding='utf-8') as write_f:4 for line inread_f:5 write_f.write(line)6

7 os.remove('a.txt')8 os.rename('.a.txt.swap','a.txt')

嗯.....你懂得

ContractedBlock.gif

ExpandedBlockStart.gif

1 取暖回忆 回忆无香2 有阳光 还感觉冷3 我站在分隔岛上4 没有方向 不想回家5 你太善良 你太美丽6 我讨厌这样想你的自己7 不屑此刻的我太甘心 与脆弱为邻8 没有魂魄 化体温成冰9 尴尬的我始终独自怀抱整个秘密10 但朋友都说我太过忧郁11 爱你我不能说 看你们拥抱甜蜜12 谈笑自若 忍受逾期的伤心13 如果我说 我真的爱你14 谁来收拾 那些被破坏的友谊15 如果我忍住这个秘密16 温暖冬天 就会遥遥而无期17 你太善良 你太美丽18 我讨厌这样想你的自己19 不屑此刻的我太甘心 与脆弱为邻20 没有魂魄 化体温成冰21 尴尬的我始终独自怀抱整个秘密22 但朋友都说我太过忧郁23 爱你我不能说 看你们拥抱甜蜜24 谈笑自若 忍受逾期的伤心25 如果我说 我真的爱你26 谁来收拾 那些被破坏的友谊27 如果我忍住这个秘密28 温暖冬天 就会遥遥而无期29 如果我说 我必须爱你30 答应给你 比友谊更完整的心31 如果我忍住这个秘密32 就该错过 埋葬冬天的秘密33 如果我说我真的爱你34 谁来收拾 这被破坏的友谊35 如果我忍住这个秘密36 温暖冬天 就会遥遥而无期37 就该错过 埋葬冬天的秘密

文件操作 - 源文件

ContractedBlock.gif

ExpandedBlockStart.gif

1 #!/usr/bin/env python

2 #-*- coding: utf-8 -*-

3 _Author_ = "Administrator"

4

5 f01 = open("Lyrics","r",encoding="utf-8")6 f02 = open("Lyrics_new","w",encoding="utf-8")7

8 find_str = "忧郁"

9 new_str = "软弱"

10

11 for line inf01:12 if find_str inline:13 line =line.replace(find_str,new_str)14

15 f02.write(line)16

17 f01.close()18 f02.close()

文件替换 - 代码

ContractedBlock.gif

ExpandedBlockStart.gif

1 取暖回忆 回忆无香2 有阳光 还感觉冷3 我站在分隔岛上4 没有方向 不想回家5 你太善良 你太美丽6 我讨厌这样想你的自己7 不屑此刻的我太甘心 与脆弱为邻8 没有魂魄 化体温成冰9 尴尬的我始终独自怀抱整个秘密10 但朋友都说我太过软弱11 爱你我不能说 看你们拥抱甜蜜12 谈笑自若 忍受逾期的伤心13 如果我说 我真的爱你14 谁来收拾 那些被破坏的友谊15 如果我忍住这个秘密16 温暖冬天 就会遥遥而无期17 你太善良 你太美丽18 我讨厌这样想你的自己19 不屑此刻的我太甘心 与脆弱为邻20 没有魂魄 化体温成冰21 尴尬的我始终独自怀抱整个秘密22 但朋友都说我太过软弱23 爱你我不能说 看你们拥抱甜蜜24 谈笑自若 忍受逾期的伤心25 如果我说 我真的爱你26 谁来收拾 那些被破坏的友谊27 如果我忍住这个秘密28 温暖冬天 就会遥遥而无期29 如果我说 我必须爱你30 答应给你 比友谊更完整的心31 如果我忍住这个秘密32 就该错过 埋葬冬天的秘密33 如果我说我真的爱你34 谁来收拾 这被破坏的友谊35 如果我忍住这个秘密36 温暖冬天 就会遥遥而无期37 就该错过 埋葬冬天的秘密

替换后的 - 文件

五、文件内光标移动

read(3):

1. 文件打开方式为文本模式时,代表读取3个字符

2. 文件打开方式为b模式时,代表读取3个字节

其余的文件内光标移动都是以字节为单位如seek,tell,truncate

注意:

1.seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

seek控制光标的移动,是以文件开头作为参照的。

tell当前光标的位置

2.truncate是截断文件,截断必须是写模式,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

import time

with open('test.txt','rb') as f:

f.seek(0,2)

while True:

line=f.readline()

if line:

print(line.decode('utf-8'))

else:

time.sleep(0.2)

1516808-20181122224959855-2122227621.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值