第8次预习课-0817

第8次预习课笔记   20180815

 

所有的变量、数据和计算过程放在内存里面完成的。

 

fp=open("D:\\up\\a.txt","r",encoding="utf-8")

data = fp.read()

fp.close()

print(data)

 

fp.read()  读到一个字符串里面

fp.readline() 读取一行

fp.readlines() 读取多行放在列表中

 

题目:找出文件中所有包含test的行号

 1 fp = open("D:\\up\\a.txt","r",encoding="utf-8")
 2 data = fp.readlines()
 3 print(data)
 4 fp.close()
 5 
 6 lines =[]
 7 
 8 for i in range(len(data)):
 9     if "test" in data[i]:
10         lines.append(i+1)
11 print(lines)

文件读取的时候,行的末尾包含回车符号的

 

Strip 回车换行空格tab,等都会去掉

XXX.strip()

 

Read()  、Readlines()

Readline()

如果文件很大,你用read会导致内存不够; 用readline来读超大文件,一行一行读。

内存在电脑中是个稀缺的资源,如果你大量占用,程序肯定不是最优的

小文件,直接用read读速度会稍微快一些

 

r: read  w: write  a: append  rb: read binary  wb: write binary   ab: append binary

r+ : read and write

w+ :write and read

a+ :append and read

 

只设置了读的模式,但是写了写的方法,会报错

 

 

w 是清空写,将原有的清空 (慎用)

w+  先清空内容再写入,然后才可以读取你写入的内容 (慎用)

r+  不清空内容,可以同时读和写入内容

a+ 追加写,所有写的内容都在文件的最后

 

 

题目:在指定目录下新建10个test文件,类似 1.txt。。。

for i in range(1,11):

fp=open("d:\\up\\"+str(i)+".txt","w",encoding="utf-8")

fp.close()

 

文件不关闭时,写入的内容,如果太少,实际写的内容,并不会立即写到磁盘上

如果没有写close(),直接python进行关闭了,操作系统也会自动把内容写入

不关闭,会将句柄耗尽

 

#这种会自动关闭 with = open +close

with open("d:\\up\\a.txt","r",encoding="utf-8") as fp:

print(fp.read())

 

题目:写一个文件,里面写入从gloryroad1~ gloryroad100,写入之后再读出来

1 with open("d:\\up\\b.txt","w",encoding="utf-8") as fp:
2      for i in range(1,101):
3          fp.write("gloryroad"+str(i)+"\n")
4 
5 with open("d:\\up\\b.txt","r",encoding="utf-8") as fp:
6     data = fp.read()
7 
8 print(data)

 

如果读取文件不存在的话

 

 

a 文件写在最后的部分

r+ 从开始写,并将已有的覆盖

 

文件游标的位置:

r+ 文件打开的时候,r或者w都是默认文件0这个位置

 

fp.tell()  文件在什么位置

fp.seek(0,0) 回到开始

offset:相对的坐标 正数:从前向后   负数:从后向前  0表示最开始的游标

whence:

(1和2 的使用基于rb模式)

0 , 表示从文件最开始位置;

1,  表示从当前位置开始,基本当前的相对位置,来重置坐标;

10  seek(5,1)   10à5

2,  2 表示从文件的末尾开始,做相对位置,来重置坐标

Seek(-5,2) 文件末尾向前数5

 

作业:

构造一个文件,将所有alex字符,替换成superman

 1 with open("d:\\up\\a.txt","r",encoding="utf-8") as fp1:
 2     with open("d:\\up\\b.txt","w",encoding="utf-8") as fp2:
 3         data = fp1.readlines()
 4         for i in data:
 5             if "alex" in i:
 6                 i = i.replace("alex","superman")
 7             fp2.write(i)
 8    
 9 with open("d:\\up\\b.txt","r",encoding="utf-8") as fp2:
10     print(fp2.read())

 

posted @ 2018-08-17 17:34  feifei_tian  阅读(150)  评论(0编辑  收藏  举报