时间:2021-05-22
一、文件的打开和创建
>>> f = open('/tmp/test.txt')>>> f.read()'hello python!\nhello world!\n'>>> f<open file '/tmp/test.txt', mode 'r' at 0x7fb2255efc00>
二、文件的读取
步骤:打开 -- 读取 -- 关闭
读取数据是后期数据处理的必要步骤。.txt是广泛使用的数据文件格式。一些.csv, .xlsx等文件可以转换为.txt 文件进行读取。我常使用的是Python自带的I/O接口,将数据读取进来存放在list中,然后再用numpy科学计算包将list的数据转换为array格式,从而可以像MATLAB一样进行科学计算。
下面是一段常用的读取txt文件代码,可以用在大多数的txt文件读取中
例如下面是将要读入的txt文件
经过读取后,在Enthought Canopy的variable window查看读入的数据, 左侧为pos,右侧为Efield。
三、文件写入(慎重,小心别清空原本的文件)
步骤:打开 -- 写入 -- (保存)关闭
直接的写入数据是不行的,因为默认打开的是'r' 只读模式
应该先指定可写的模式
>>> f1 = open('/tmp/test.txt','w')>>> f1.write('hello boy!')但此时数据只写到了缓存中,并未保存到文件,而且从下面的输出可以看到,原先里面的配置被清空了
[root@node1 ~]# cat /tmp/test.txt[root@node1 ~]#关闭这个文件即可将缓存中的数据写入到文件中
>>> f1.close()[root@node1 ~]# cat /tmp/test.txt[root@node1 ~]# hello boy!注意:这一步需要相当慎重,因为如果编辑的文件存在的话,这一步操作会先清空这个文件再重新写入。那么如果不要清空文件再写入该如何做呢?
使用r+ 模式不会先清空,但是会替换掉原先的文件,如下面的例子:hello boy! 被替换成hello aay!
如何实现不替换?
>>> f2 = open('/tmp/test.txt','r+')>>> f2.read()'hello girl!'>>> f2.write('\nhello boy!')>>> f2.close()[root@node1 python]# cat /tmp/test.txthello girl!hello boy!可以看到,如果在写之前先读取一下文件,再进行写入,则写入的数据会添加到文件末尾而不会替换掉原先的文件。这是因为指针引起的,r+ 模式的指针默认是在文件的开头,如果直接写入,则会覆盖源文件,通过read() 读取文件后,指针会移到文件的末尾,再写入数据就不会有问题了。这里也可以使用a 模式
>>> f = open('/tmp/test.txt','a')>>> f.write('\nhello man!')>>> f.close()>>>[root@node1 python]# cat /tmp/test.txthello girl!hello boy!hello man!关于其他模式的介绍,见下表:
文件对象的方法:
f.readline() 逐行读取数据
方法一:
方法二:
>>> for i in open('/tmp/test.txt'):... print i...hello girl!hello boy!hello man!f.readlines() 将文件内容以列表的形式存放>>> f = open('/tmp/test.txt')>>> f.readlines()['hello girl!\n', 'hello boy!\n', 'hello man!']>>> f.close()f.next() 逐行读取数据,和f.readline() 相似,唯一不同的是,f.readline() 读取到最后如果没有数据会返回空,而f.next() 没读取到数据则会报错
>>> f = open('/tmp/test.txt')>>> f.readlines()['hello girl!\n', 'hello boy!\n', 'hello man!']>>> f.close()>>>>>> f = open('/tmp/test.txt')>>> f.next()'hello girl!\n'>>> f.next()'hello boy!\n'>>> f.next()'hello man!'>>> f.next()Traceback (most recent call last):File "<stdin>", line 1, in <module>StopIterationf.writelines() 多行写入
>>> l = ['\nhello dear!','\nhello son!','\nhello baby!\n']>>> f = open('/tmp/test.txt','a')>>> f.writelines(l)>>> f.close()[root@node1 python]# cat /tmp/test.txthello girl!hello boy!hello man!hello dear!hello son!hello baby!f.seek(偏移量,选项)
>>> f = open('/tmp/test.txt','r+')>>> f.readline()'hello girl!\n'>>> f.readline()'hello boy!\n'>>> f.readline()'hello man!\n'>>> f.readline()' '>>> f.close()>>> f = open('/tmp/test.txt','r+')>>> f.read()'hello girl!\nhello boy!\nhello man!\n'>>> f.readline()''>>> f.close()这个例子可以充分的解释前面使用r+这个模式的时候,为什么需要执行f.read()之后才能正常插入
f.seek(偏移量,选项)
(1)选项=0,表示将文件指针指向从文件头部到“偏移量”字节处
(2)选项=1,表示将文件指针指向从文件的当前位置,向后移动“偏移量”字节
(3)选项=2,表示将文件指针指向从文件的尾部,向前移动“偏移量”字节
偏移量:正数表示向右偏移,负数表示向左偏移
>>> f = open('/tmp/test.txt','r+')>>> f.seek(0,2)>>> f.readline()''>>> f.seek(0,0)>>> f.readline()'hello girl!\n'>>> f.readline()'hello boy!\n'>>> f.readline()'hello man!\n'>>> f.readline()''f.flush() 将修改写入到文件中(无需关闭文件)
>>> f.write('hello python!')>>> f.flush()[root@node1 python]# cat /tmp/test.txthello girl!hello boy!hello man!hello python!f.tell() 获取指针位置
>>> f = open('/tmp/test.txt')>>> f.readline()'hello girl!\n'>>> f.tell()12>>> f.readline()'hello boy!\n'>>> f.tell()23四、内容查找和替换
1、内容查找
实例:统计文件中hello个数
思路:打开文件,遍历文件内容,通过正则表达式匹配关键字,统计匹配个数。
脚本如下:
方法一:
方法二:
#!/usr/bin/pythonimport refp = file("/tmp/test.txt",'r')count = 0for s in fp.readlines():li = re.findall("hello",s)if len(li)>0:count = count + len(li)print "Search",count, "hello"fp.close()[root@node1 python]# python count1.pySearch 4 hello2、替换
实例:把test.txt 中的hello全部换为"hi",并把结果保存到myhello.txt中。
实例:读取文件test.txt内容,去除空行和注释行后,以行为单位进行排序,并将结果输出为result.txt。test.txt 的内容如下所示:
脚本如下:
f = open('cdays-4-test.txt')result = list()for line in f.readlines(): # 逐行读取数据line = line.strip() #去掉每行头尾空白if not len(line) or line.startswith('#'): # 判断是否是空行或注释行continue #是的话,跳过不处理result.append(line) #保存result.sort() #排序结果print resultopen('cdays-4-result.txt','w').write('%s' % '\n'.join(result)) #保存入结果文件声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Python具有基本的文本文件读写功能。Python的标准库提供有更丰富的读写功能。文本文件的读写主要通过open()所构建的文件对象来实现。创建文件对象我们打
本文实例讲述了Python实现统计文本文件字数的方法。分享给大家供大家参考,具体如下:统计文本文件的字数,从当前目录下的file.txt取文件#-*-codin
本文实例讲述了python计算文本文件行数的方法。分享给大家供大家参考。具体实现方法如下:filename="somefile.txt"myfile=open(
python合并文本文件示例代码。python实现两个文本合并employee文件中记录了工号和姓名catemployee.txt:100JasonSmith2
txt是文本文件扩展名。文本文件是一种计算机文件,是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。 txt是微软在操作系统上附带的一种文本格式,是最常见