python学习第三周之文件读与写

1.首先要在pycharm中新建一个txt文档,写入内容,我们接下来使用代码对其进行操作。

2.文件要打开就要有关闭,如下:,打开文件用open,在windows中打开文件是gbk的,在python中为utf-8,需要指定使用utf-8打开;如果需要对文件进行操作,需要将文件内存对象赋予一个变量,后续只需要对变量操作即可,比如赋予f

f=open("perfect2",'w',encoding="utf-8")#文件句柄,文件的内存对象,包含文件名、字符集、大小、在硬盘上的起始位置,默认为读
f.close()

(1)以上模式可以为r,w,a;如果为r的话,只能读取;如果多次读取写为以下:读取文件时从第一行开始读取,读取到最后一行后,为读取完一次,再次读取时,从当前位置开始读取,故读取不到

data=f.read()  #读取文件时从第一行开始读取,读取到最后一行后,为读取完一次,再读一次,从当前位置开始读取,故读取不到
print(data)

(2)如果为w,相当于创建一个相同名字的文件,并将其原文件覆盖,但是不能读取,不会输出;如下,会将原文件覆盖,并且文件中内容变为写入的内容。

f=open("perfect",'w',encoding="utf-8")
f.write("全世界在催着我长大,\n") 
f.close()

(3)a为append,即追加,直接追加到原文件后面,但是不能读取,不会覆盖。

f=open("perfect",'a',encoding="utf-8")
f.write("你却总能捧我在手掌。\n")

3.文件中循环的使用:

(1)读取文件的每一行如print(f.readline()),如果输出两行,则需要写两次;这时候可以使用for循环,如下:

for i in range(5):
 print(f.readline())

(2)readlines()将文件以列表的格式输出,每一行为一个元素,可以使用print(f.readlines())进行验证,所以可以使用readlines()输出整个文档。

for line in f.readlines():
 print(line.strip())  #strip去除前后空格

(3)而我们如果不想让某一行输出,可以找到该行下标,来使某行不输出

for index,line in enumerate(f.readlines()):
    if index==9:   #不输出第10行
        print('-----分割线-----')
        continue
    print(line.strip())  # strip去除前后空格

如果想实现某一行不输出,还有另一种方法,可以在内存中只保存一行,这时没有索引,可以使用计数器:

f=open("perfect2",'r',encoding="utf-8")
count=0
for line in f:
    if count == 9:  # 不输出第10行
        print('-----分割线-----')
        count += 1
        continue
    print(line)  #读取每行,内存中只保存一行;
    count += 1
f.close()

 

你可能感兴趣的:(python学习第三周之文件读与写)