Created
March 11, 2019 13:52
-
-
Save caoya171193579/7c99b15f01e83c4d6b03148ff5be3cab to your computer and use it in GitHub Desktop.
进阶
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
文件操作 | |
1、open("路径",'{r,r+,w,w+,a,a+,b,u}模式?'):打开文件的方式 | |
2、read(): 读取文件 | |
3、close():关闭文件 | |
4、write('要添加的内容'): 写入内容的参数 | |
#string:字符串 | |
文件对象方法: | |
1、readline(瑞德赖子): | |
FileObject(法乐偶不杰特): 文件对象 | |
Object:对象 | |
-格式 | |
string=FileObject.readline([size(塞子:大小的意思)]) | |
-说明 | |
每次读取文件的一行; | |
size:是指每行每次读取size个字节,只到行的末尾 | |
文件对象.readline():返回的是一个字符串string; | |
括号内不加多少的size个字节,返回就是一行一行的读取,写上几,每次读取就是几个字节;全部读取完了之后就返回'' 空字符串。 | |
 | |
#遍历文件:就是从头到尾把文件读取一遍,然后返回整个文件 | |
>>>for i in open('wenjian.txt') #i 可以是任何自定义的字母值 | |
. . . print i | |
. . . | |
nihao | |
laji | |
wobuhaoooooo | |
>>> | |
2、readlines(瑞德赖斯) | |
#list (莱斯特): 列表 | |
-格式: | |
list = FileObject.resdlines([size]) | |
-说明: | |
多行读,返回一个列表 | |
size:每次读入size个字符,然后继续按size读,而不是每次读入行的size个字符。 怎样读都是一次把所有文件内的内容以列表的形式读取出来。 | |
 | |
3、next: | |
-格式: | |
FileObject(文件对象).next() | |
-说明: | |
返回当前行,并将文件指针到下一行。 | |
 | |
next()同readline()的用法类似,都是一行一行的返回文件内容,区别在于readline()把文件读取完之后会一直无限制返回空字符串,而next()读取完之后就会停止迭代,用python打开的文件没读取前都是一个迭代对象!!! | |
StopIteration(四到普莱特瑞深): 停止迭代。 next()的好处。 | |
4、write(ruai特): 写入 | |
-格式: | |
FileObject.write(string) | |
-说明: | |
write和后面的writelines在写入前,是否会清除文件中原来所有的数据,再重新写入新的内容,取决于open('路径','模式')打开文件的模式(r,r+,w,w+,a,a+,b,U) | |
 | |
root@kali:~# cat jian.txt | |
one | |
two | |
three | |
aaasssroot@kali:~# | |
root@kali:~# | |
5、writelines:多行写入 | |
-格式: | |
FileObject.writelines(list(莱斯特:列表)) | |
-说明: | |
多行写; | |
效率比write高,速度更快,少量写入还是可以使用write. | |
 | |
 | |
6、seek: 指针位置操作;重点 | |
-格式 | |
FileObject.seek(偏移量,选项) | |
-说明 | |
选项=0时,表示将文件指针指向从文件头部到"偏移量"字节处,就是不偏移指针。把指针移动到头部第一位。 | |
选项=1时,表示将文件指针指向从文件的当前位置,向后移动"偏移量"字节;"偏移量"为正数向左偏移,负数向右偏移。 | |
选项=2时,表示将文件指针指向从文件尾部,向前移动"偏移量"字节。 | |
 | |
7、flush(弗拉时): #重点使用 | |
-格式 | |
FileObjesct.flush():提交更新 | |
-说明 | |
在我们在交互模式下,想不用close(),参数退出就能更新我们加入的内容的情况下,我们就要用到flush()参数,来提交我们写入或更改的操作! 方便我们操作。 | |
>>> ff.close() | |
>>> l = ['\n1\n','2\n','3\n'] | |
>>> ff = open('jian.txt','a') | |
>>> ff.writelines(l) | |
>>> ff.flush() | |
>>> | |
#没有close()参数结束,flush()参数已经提交更新了文件。如果没执行flush()参数,就要close()参数结束操作,我们更改或者添加的内容才会更新。 | |
 | |
8、课题 | |
1.查看文件wenjian.txt内字母o的数量,并打印出来。 | |
 | |
ff.readlines(): 读取函数,读取ff 对象打开的所有内容。语法 | |
len()方法语法: | |
len( s )参数 | |
s -- 对象。返回值 | |
返回对象长度。实例 | |
以下实例展示了 len() 的使用方法: | |
>>>str = "runoob" | |
>>> len(str) # 字符串长度 6 | |
>>> l = [1,2,3,4,5] | |
>>> len(l) # 列表元素个数 5 | |
2、 替换文件wenjian.txt中的字符o改为m! | |
- 分析:先以'r'只读模式打开后,对文件每一行进行readlines()读取操作,并保存到新的列表中。然后随之关闭。 再以'r+'方式进行读写打开,对已经保存的列表用re.sub()进行替换操作,并用f.writelines()函数写入。 | |
 | |
3、、将替换后的内容保存到新文件中 | |
import sys | |
import re | |
f1 = open('/home/wuzz/11.txt','r+') | |
f2 = open('/home/wuzz/12.txt','w+') | |
str1=r'hello' | |
str2=r'hi' | |
for ss in f1.readlines(): | |
tt=re.sub(str1,str2,ss) | |
f2.write(tt) | |
f1.close() | |
f2.close() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment