python文件处理复习
1.创建文件
>>> file('test.txt','w') -->在当前路径下创建文件
test.txt是文件名
w是打开文件的方式,r是读,w是写,a是追加,如果当前路径没有这个文件,用w可以直接创建
2.往文件中写内容
>>> file('test.txt','w').write('hello') #如果是以'w'模式打开的,那么会重新写这个test.txt文件,原来的内容不再有。
正确的写法:
>>> f = file('test.txt','w')
>>> f.write('hello\n') #\n 是换行
>>> f.write('hello2') #现在写的数据还在内存里边,没有写到硬盘上,此时查看文件是空的,即便原来有数据。
>>> f.close() #把文件关掉就写到硬盘上了,只要是用w模式打开的写数据,就会覆盖掉以前的数据,产生一个新文件
3.读文件
如果是以w模式打开文件的,写完数据之后不想关闭文件,但是还想看到文件中的内容,用flush(),但是这样会报错,因为你用的是w模式打开的,所以没法读取,在这儿只是想引进flus()的使用方法
不写打开文件模式,默认是以r来打开文件的
>>> f = file('test.txt')
>>> f.read() #read()方法读取出来的是字符串,全部读取出来
'hellohello\n'
>>> f.readline() #这个是读取文件一行的方法,在这儿为什么会是空的呢?因为在刚打开文件时,我们用f.read()读取了一次,相当于从内存中把这个字符串全部读取了出来,
'' #这时候指针就移到了字符串的后边,那同时也就没有了内容。
可以通过这个来验证以上内容是否正确
>>> f = file('test.txt') #关闭文件后重新打开
>>> f.tell() #查看文件内容在内存指针的位置
0 #结果是0,也就是没读取文件之前指针在最前边
>>> f.readline() #读取test.txt中的一行
'hello\n' #显示结果以字符串的形式出现
>>> f.readline()
'hello\n' #test.txt总共写了两行hello
>>> f.readline() #在读取的时候就没有内容了,因为第三行没有内容,所以显示空
''
>>> f.tell() #再次调用查看指针在内存中的位置
12
>>>
>>>f.seek(0) #将指针移到0位置上,就可以重新读取内容了
>>> f.tell()
0
>>> f.seek(0)
>>> f.readines() #以列表的方式读取出来,然后可以精确的拿出第几行,但是是读到内存中去的,占用内存空间,文件太大的时候会卡
f.xreadlines() #是读取文件所有行的迭代器,如果一个G的日志文件,用这种方法比直接用readline()要快,因为readline()这个方法是先读到内存在打印,所以在打印1G的日志文件时会先等一会儿才会打印,而xreadline()会直接打印,内存中读一行然后扔一行
4.遍历文件,两种遍历方法。
#!/usr/bin/env python
f = file('auth.log')
for line in f.xreadlines():
print line,
#!/usr/bin/env python
while True:
line = f.readline()
print line,
if not line:break
5.读取文件的模式
如果文件以读写模式打开('r+'),那么写的时候是根据指针的位置来覆盖文件的,如果先读了一行,在往文件写的时候,会覆盖第二行的字符,而不是整个第二行!
('rb')可以处理二进制文件。如果windows过来的python文件,在linux上处理的时候用这个二进制文件处理。换平台的时候有时候会报错。
6.文件内容替换,批量更改文件
for line in fileinput.input("filepath",inplace=1): #inplace=1 表示文件里的内容也同时改掉,如果是0的话,文件里的内容不会改掉,只是会打印出来。
line = line.replace("oldtext","newtext")
print line, #必须print,没有print更改失败!
backup='' #修改文件之前做备份,只需要加个后缀即可
#!/usr/bin/env python
import fileinput
for line in fileinput.input("test.txt",inplace=1,backup='.bak'):
line = line.replace("hello2222","hello2")
print line,
备份的文件没有被修改,test.txt.bak就是备份的文件
7.存放不同类型的文件到同一个文件中,以二进制存储
#!/use/bin/env python
improt struct
n=1600 整数类型
x=92.60 浮点型
b=True bool型
s='!@中国' 字符串型
sn=struct.pack('if?',n,x,b) 将不同类型转换成二进制方法
f=open('erjinzhi.dat','wb')
f.write(sn)
f.write(s)
f.close
python文件处理复习的更多相关文章
- 课程 python 文件操作复习
# 文件处理 # 打开文件 #open('路径','打开方式','指定编码方式') # 打开方式 r w a r+ w+ a+ b #r+ 打开文件直接写 和读完再写 # 编码方式 —— utf-8 ...
- Linux下Python 文件内容替换脚本
Linux下Python 文件替换脚本 import sys,os if len(sys.argv)<=4: old_text,new_text = sys.argv[1],sys.argv[2 ...
- 【Python文件处理】递归批处理文件夹子目录内所有txt数据
因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...
- Python文件使用“wb”方式打开,写入内容
Python文件使用"wb"方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入 ...
- Python 文件操作函数
这个博客是 Building powerful image classification models using very little data 的前期准备,用于把图片数据按照教程指示放到规定的文 ...
- python文件I/O(转)
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- python 文件操作总结
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- python文件和元组
python文件操作 相较于java,Python里的文件操作简单了很多 python 获取当前文件所在的文件夹: os.path.dirname(__file__) 写了一个工具类,用来在当前文件夹 ...
随机推荐
- 中国队再创佳绩,IOI2018喜获四金
第30届国际信息学奥林匹克竞赛(IOI2018)于9月1日-8日在日本筑波举行,共有来自87个国家(地区)的335名选手参赛. 中国代表队四名选手经过努力拼搏,获得金牌.其中,杨懋龙(湖南长沙市 ...
- iframe子父页面函数互相调用
1.iframe子页面调用父页面js函数 子页面调用父页面函数只需要写上window.praent就可以了.比如调用a()函数,就写成: window.parent.a(); 子页面取父页面中的标签 ...
- bzoj3976
题解: 先跑一下Sa 然后再用kmp匹配一下哪一些位置不行 然后二分答案 代码: #include<bits/stdc++.h> ; using namespace std; int t[ ...
- 深入理解Connector
上一篇主要是从各个容器的生命周期的角度讲了一下整个tomcat的运行流程,说明了各个容器之间的调用关系.但并没有太过详细的说明每一个组件并区分他们. 下面从功能的角度上详细的分析一下connector ...
- 《Python》 计算机基础
一.计算机基础: cpu:中央处理器,相当于人的大脑,运算中心,控制中心. 内存:暂时存储数据,与CPU交互. 优点:内存读取速度快. 缺点:容量小,造价高,断电即消失. 硬盘:长期存储数据. 优点: ...
- DevExpress v18.1新版亮点——DevExtreme篇(四)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExtreme JavaScript Controls v18.1 的新功能 ...
- it网站
1:http://www.importnew.com/ importnew 专注于java的论坛 2:Github是最活跃的开源代码库和版本控制平台,可以说是程序员当中知名度最高的技术社区.各 ...
- 句柄线程做参数和PostMessage的用法
当我们启动一个线程,并且要给线程函数传递的参数是窗口句柄时,我们应该这样做: HWND hHwnd = GetSafeHwnd(); HANDLE hThread; DWORd dwThreadId; ...
- 使用OpenBTS基站测试物联网模块安全性
0×00 引子 近年来,随着云计算.物联网技术的快速发展,物联网的理念和相关技术产品已经广泛渗透到社会经济民生的各个领域,越来越多的穿戴设备.家用电器通过蓝牙.Wi-Fi.Li-Fi.z-wave.L ...
- mysql数据库负载均衡
负载均衡集群是有一组相互独立的计算机系统构成,通过常规网络或专用网络进行链接,有路由器衔接在一起,各个节点相互协作,共同负载.均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器. 实 ...