python之路13--之文件的所有操作

一、文件操作的说明文件操作:

        1、文件路径:d:\\file.txt
2、编码方式:utf-8 gbk
3、操作方式:只读、只写、追加、读写、写读
4、以什么编码格式存储的文件就要以什么编码格式打开,否则会乱码
5、如果打开了文件读取完后不关闭文件,读取完一遍后光标会停留在文件的结尾,而不是开头,需要将光标移动至文件开头,或者关闭文件。

二、文件的所有操作

1、文件的读操作

1、读取文件的全部内容(如果文件过大会卡住,因为占用内存太大了)
 f = open('file','r',encoding='utf-8').read()             #1、文件路径(相对路径)、2、对文件的操作方法、3、字符编码、.read()为读
print(f)

2、循环打印文件的前5行内容,readline:按行获取文件内容
f = open('file','r',encoding='utf-8')
for i in range(5):
    print(f.readline())           #循环打印文件的前五行

3、循环获取文件内容,不想要第十行的内容,并在第十行打印----------分割线------------------
f = open("file",'r',encoding="utf-8")
count = 0
for line in f:
    if count == 9:
        print("----------分割线------------------")
        count += 1
        continue
    print(line.strip())
    count += 1

4、以bytes类型读取文件,对非文字类文件的操作,或者上传下载的操作
f = open('file',mode='rb',).read()
 print(f)

5、指定光标的位置获取文件内容
f = open('file2',mode='r+',encoding='utf-8')
f.seek(3)                    #seek是按照字节来调整光标的位置,将光标的位置移动到第三个字节这里{注意:utf8编码三个字节代表一个中文字符,也就是说如果是中文,将光标调整到2时会报错}
print(f.tell())                     #获取光标的位置
print(f)
f.close()

6、读取文件最后两个字
f = open('file2',mode='a+',encoding='utf-8')           #以追加读的方式打开file2
f.write('欧阳奇异')           #再file2的结尾追加  欧阳奇异
f.seek(f.tell()-6)             #设置光标的位置为:tell -6{因为再结尾追加光标默认在最后,-6就是倒数地6个字符,也就是两个汉字}
print(f.read())                #打印结果为奇异
f.close

7、获取文件的前三个字
f = open('file2',mode='r+',encoding='utf-8')
print(f.read(3))                #仅打印file1文件里的三个字节
f.close

8、文件打开的另一种写法
with open('file2',mode='a+',encoding='utf-8') as  f: #这种打开文件的方法再操作完文件后就不需要使用close关闭文件了
    print(f.readline())

with open('file2',mode='a+',encoding='utf-8') as f,open('file1',mode='a+',encoding='utf-8') as f1:          #也可以同时打开两个文件
    print(f.readline(),f1.readline())
View Code

2、文件的写操作

说明:

   之前没有这个文件则创建这个文件,
如果之前有这个文件则会覆盖掉之前文件的内容(先将源文件的内容清除,然后再写)
1、文件的写操作
f = open("file1",mode='w',encoding="utf-8")
f.write("welcome to www.71net.com")
f.close()

2、使用bytes类型的写操作
f = open('file2',mode='wb')
f.write("奇异网".encode('utf-8'))
f.close()

3、文件的追加操作
f = open('file1',mode='a',encoding='utf-8')
f.write('\nwww.71box.net    奇异盒子')
f.close()

4、以bytes类型追加
f = open('file1',mode='ab')
f.write('\nwww.71so.cn    奇异搜'.encode('utf-8'))
f.close()
View Code

3、 文件的读写操作

说明:

  1、先读后写:先执行读的操作后,光标移动到文件的末尾,然后再进行写的操作,那么写入的东西就写到文件的结尾了
2、先写后读:先执行写的操作,默认光标在文件的开头,此时执行写的操作会在文件开头写,那样就会覆盖文件的内容,源文件的内容不会向后移,只会被覆盖
总结:执行文件的写操作之前一定要确定光标的位置
1、读写
f = open('file2',mode='r+',encoding='utf-8')
print(f.read())                #先做读取操作,读完文件后此时光标在文件的结尾
f.write('www.71.ink')      #然后写入www.71.ink
f.close()

2、以bytes类型读写
f = open('file2',mode='r+b')
print(f.read())                  #先做读取操作,读完文件后此时光标在文件的结尾
f.write("黑马".encode('utf-8'))   #然后写入黑马
f.close()

4、文件的写读操作(慎用)

说明:如果源文件里面有内容会将原文件的内容清空后,然后再写入,如果之前没有文件,则创建文件

1、文件的写读操作
f = open('file2',mode='w+',encoding='utf-8')
f.write('www.71.ink')
f.seek(0)                               #调整光标的位置
print(f.read())                    #读取文件的内容
f.close()

2、以bytes类型的写读操作
f = open('file2',mode='w+b')
f.write('www.hm.ink'.encode('utf-8'))
f.seek(0)
print(f.read())
f.close()

5、文件的追加读操作

1、文件的追加读操作
f = open('file2',mode='a+',encoding='utf-8')       #以追加读的方式打开文件
f.write("欧阳奇异")        #写入欧阳奇异
f.seek(0)                     #调整光标位置
print(f.read())              #读取文件的全部内容

2、以bytes类型的文件追加读操作
f = open('file2',mode='a+b')
f.write("奇异网络    www.71net.com".encode('utf-8'))
f.seek(0)
print(f.read().decode('utf-8'))
f.close()

 6、文件的一些其他操作方法

1、进度条实现
import sys,time
for i in range(100):
    sys.stdout.write("# ")
    sys.stdout.flush()
    time.sleep(0.3)

2、换行符转换(windows的换行符为:\r\u,而在linux上换行符为:\n,如果想在linux系统上读取windows系统的文件可以使用以下方式 )
f = open("file","rU",encoding="utf-8")       #rU or r+U:表示在读取时,可以将\r\n自动替换为\n,
f = open("file","r+U",encoding="utf-8")


f = open('file2',mode='a+',encoding='utf-8') print(f.readable()) #判断文件是不是可读的,是则返回True、不是则发挥False print(f.readlines()) #每一行当成列表中的一个元素,添加到列表中,以列表的形式显示 print(f.truncate(2)) #对源文件进行截取,指定size大小为2表示源文件只保留两个字符 print(f.seekable()) #判断是否可以调整光标,可以则返回True、不可以则返回False print(f.writable()) #判断是不是可写的,是则返回True、不是则返回False print(f.encoding) #获取文件编码格式 print(f.name) #打印当前文件的名字 print(f.isatty()) #判断是不是终端设备,是则返回True,不是则返回False print(f.flush) #将数据刷新到磁盘 print(f.closed) #判断文件是否关闭了,关闭了则返回True,没有关闭则返回False

6、文件的修改操作

f = open("file2","r",encoding="utf-8")
f_new = open("file2.new","w",encoding="utf-8")
for line in f:
    if "奇异" in line:
        line = line.replace("奇异","欧阳奇异")
    f_new.write(line)
import os
os.remove('file2') #删除文件
os.rename('file2.new','file2') #重命名文件
f.close()
f_new.close()
with open('file',encoding='utf-8') as f,open('file.bak','w',encoding='utf-8') as f2:
    for line in f:
        if '呵呵' in line:  #找需要替换的关键词
            line = line.replace('呵呵','哈哈')          #‘需要替换的原内容’,‘需要替换的新内容’
        #写文件
        f2.write(line) #将新内容写入到新文件里

import os
os.remove('fiel') #删除文件
os.rename('file.bak',file')  #重命名文件

 下面是画图说明文件的修改原理:

 

posted @ 2018-07-22 17:55  欧-阳  阅读(215)  评论(0)    收藏  举报