Python读写txt文本文件的操作方法全解析docWord文档格式.docx
- 文档编号:18024046
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:10
- 大小:17.58KB
Python读写txt文本文件的操作方法全解析docWord文档格式.docx
《Python读写txt文本文件的操作方法全解析docWord文档格式.docx》由会员分享,可在线阅读,更多相关《Python读写txt文本文件的操作方法全解析docWord文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
Efield=[]
withopen(filename,r)asfile_to_read:
whileTrue:
lines=file_to_read.readline()#整行读取数据
ifnotlines:
break
pass
p_tmp,E_tmp=[float(i)foriinlines.split()]#将整行数据分割处理,如果分割符是空格,括号里就不用传入参数,如果是逗号,则传入‘,字符。
pos.append(p_tmp)#添加新读取的数据
Efield.append(E_tmp)
pos=np.array(pos)#将数据从list类型转换为array类型。
Efield=np.array(Efield)
例如下面是将要读入的txt文件经过读取后,在EnthoughtCanopy的variablewindow查看读入的数据,左侧为pos,右侧为Efield。
三、文件写入(慎重,小心别清空原本的文件)
打开--写入--(保存)关闭
直接的写入数据是不行的,因为默认打开的是r只读模式
f.write(helloboy)
Traceback(mostrecentcalllast):
File"
"
line1,in
IOError:
Filenotopenforwriting
应该先指定可写的模式
f1=open(/tmp/test.txt,w)
f1.write(helloboy!
)
但此时数据只写到了缓存中,并未保存到文件,而且从下面的输出可以看到,原先里面的配置被清空了
[root@node1~]#cat/tmp/test.txt
[root@node1~]#
关闭这个文件即可将缓存中的数据写入到文件中
f1.close()
[root@node1~]#helloboy!
注意:
这一步需要相当慎重,因为如果编辑的文件存在的话,这一步操作会先清空这个文件再重新写入。
那么如果不要清空文件再写入该如何做呢?
使用r+模式不会先清空,但是会替换掉原先的文件,如下面的例子:
helloboy!
被替换成helloaay!
f2=open(/tmp/test.txt,r+)
f2.write(
helloaa!
f2.close()
[root@node1python]#cat/tmp/test.txt
helloaay!
如何实现不替换?
f2.read()
hellogirl!
可以看到,如果在写之前先读取一下文件,再进行写入,则写入的数据会添加到文件末尾而不会替换掉原先的文件。
这是因为指针引起的,r+模式的指针默认是在文件的开头,如果直接写入,则会覆盖源文件,通过read()读取文件后,指针会移到文件的末尾,再写入数据就不会有问题了。
这里也可以使用a模式
f=open(/tmp/test.txt,a)
f.write(
helloman!
关于其他模式的介绍,见下表:
文件对象的方法:
f.readline()逐行读取数据
方法一:
f.readline()
方法二:
foriinopen(/tmp/test.txt):
...printi
...
f.readlines()将文件内容以列表的形式存放
f.readlines()
[hellogirl!
helloboy!
helloman!
]
f.next()逐行读取数据,和f.readline()相似,唯一不同的是,f.readline()读取到最后如果没有数据会返回空,而f.next()没读取到数据则会报错
f.next()
StopIteration
f.writelines()多行写入
l=[
hellodear!
helloson!
hellobaby!
f.writelines(l)
f.seek(偏移量,选项)
f=open(/tmp/test.txt,r+)
这个例子可以充分的解释前面使用r+这个模式的时候,为什么需要执行f.read()之后才能正常插入
(1)选项=0,表示将文件指针指向从文件头部到“偏移量”字节处
(2)选项=1,表示将文件指针指向从文件的当前位置,向后移动“偏移量”字节
(3)选项=2,表示将文件指针指向从文件的尾部,向前移动“偏移量”字节
偏移量:
正数表示向右偏移,负数表示向左偏移
f.seek(0,2)
f.seek(0,0)
f.flush()将修改写入到文件中(无需关闭文件)
f.write(hellopython!
f.flush()
f.tell()获取指针位置
f.tell()
12
23
四、内容查找和替换
1、内容查找
实例:
统计文件中hello个数
思路:
打开文件,遍历文件内容,通过正则表达式匹配关键字,统计匹配个数。
脚本如下:
#!
/usr/bin/python
importre
f=open(/tmp/test.txt)
source=f.read()
f.close()
r=rhello
s=len(re.findall(r,source))
prints
[root@node1python]#pythoncount.py
4
fp=file("
/tmp/test.txt"
r)
count=0
forsinfp.readlines():
li=re.findall("
hello"
s)
iflen(li)>
0:
count=count+len(li)
print"
Search"
count,"
fp.close()
[root@node1python]#pythoncount1.py
Search4hello
2、替换
把test.txt中的hello全部换为"
hi"
,并把结果保存到myhello.txt中。
f1=open(/tmp/test.txt)
f2=open(/tmp/myhello.txt,r+)
forsinf1.readlines():
f2.write(s.replace(hello,hi))
f1.close()
f2.close()
[root@node1python]#touch/tmp/myhello.txt
[root@node1~]#cat/tmp/myhello.txt
higirl!
hiboy!
himan!
hipython!
读取文件test.txt内容,去除空行和注释行后,以行为单位进行排序,并将结果输出为result.txt。
test.txt的内容如下所示:
#somewords
Sometimesinlife,
Youfindaspecialfriend;
Someonewhochangesyourlifejustbybeingpartofit.
Someonewhomakesyoulaughuntilyoucantstop;
Someonewhomakesyoubelievethattherereallyisgoodintheworld.
Someonewhoconvincesyouthattherereallyisanunlockeddoorjustwaitingforyoutoopenit.
ThisisForeverFriendship.
whenyouredown,
andtheworldseemsdarkandempty,
Yourforeverfriendliftsyouupinspiritsandmakesthatdarkandemptyworld
suddenlyseembrightandfull.
Yourforeverfriendgetsyouthroughthehardtimes,thesadtimes,andtheconfusedtimes.
Ifyouturnandwalkaway,
Yourforeverfriendfollows,
Ifyouloseyouway,
Yourforeverfriendguidesyouandcheersyouon.
Yourforeverfriendholdsyourhandandtellsyouthateverythingisgoingtobeokay.
f=open(cdays-4-test.txt)
result=list()
forlineinf.readlines():
#逐行读取数据
line=line.strip()#去掉每行头尾空白
ifnotlen(line)orline.startswith(#):
#判断是否是空行或注释行
continue#是的话,跳过不处理
result.append(line)#保存
result.sort()#排序结果
printresult
open(cdays-4-result.txt,w).write(%s%
.join(result))#保存入结果文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 读写 txt 文本文件 操作方法 解析 doc
![提示](https://static.bdocx.com/images/bang_tan.gif)