Python基础知识(八)----文件操作

文件操作

一丶文件操作初识

###f=open('文件名','模式',编码):
    #open()   # 调用操作系统打开文件
    #mode     #对文件的操作方式
    #encoding # 文件的编码格式    存储编码要统一
    # f       #文件句柄,操作文件的对象

    f=open('a.txt',mode='r',encoding='utf-8'):
    f.read()
    f.close()


###文件操作步骤
    #1.开文件  open
    #2.操作文件:
    #3.关闭文件 ,关闭之后就不能再操作文件

二丶文件读写操作的模式(r,w,rb,wb)

###r 模式  (文件的读模式)
    f=open('a','r',encoding='utf-8')
    content=f.read()         # 全读,再次读取就没有内容.不建议使用(因为时一次性把文件全部加载到内存中,造成内存溢出)
    content=f.read(3)        # 按照字符读取
    content=f.readline(3)    # 默认读一行  ,读取第一行中的字符读取
    content=f.readlines(3)   # 一行一行读取,存储到列表中,\n换行符
    print(content)
    f.close()                # 手动关闭文件句柄


###循环遍历读取文本
    for i in f: 		     # 一行一行读取  , 防止内存溢出
        print(i)

###w模式 (清空写入),写入的内容必须是字符串格式.
    # w 分为两步:     
        #1.先查看有没该文件,没有就创建,有就清空 
        #2. 在写入
    f=open('day08.txt','w',encoding='utf-8')
    f.write('123')    # 必须是字符串
    f.flush()         # 在写模式下,将写入内容从内存刷到硬盘上
    f.close()


###a模式(在文件末尾,追加写入)
    f=open('day08.txt','a',encoding='utf-8')
    f.write('123')
    f.flush()         # 在写模式下,将写入内容从内存刷到硬盘上
    f.close()
###rb模式(以二进制的模式读取文件,不指定编码)
####常用于处理读取非文本文件,如视频,图片等
    f=open('day08.txt','rb')
    print(f.read())
    f.close()

    #读取结果    "b'\xe5\xa4\xa7\xe5\xa4\x9a\xe6\x92\x92\xe5\xa4\x9a\xe6\x92\x92\xe5\xa4\"

###wb模式(以二进制的模式写文件,不指定编码)
###常用于处理写入非文本文件,如视频,图片等

import requests
ret=requests.get('https://www.baidu.com/img/bd_logo1.png')
print(ret.content)

#将非文本文件写入
f=open('1.png','wb')
f.write(ret.content)
f.flush()         # 在写模式下,将写入内容从内存刷到硬盘上
f.close()

三丶相对路径和绝对路径

###绝对路径  从磁盘的根目录开始 (需要转义\\)
	E:\File\oldboy学习笔记\Python之路\day08\a


###相对路径  相对于当前文件路径
	day08/a


###使用os模块,查看当前工作路径
import os
print(os.getcwd()) #E:\File\oldboy学习笔记\Python之路\day08


***总结:***
    \ : 表示绝对路径,从磁盘根目录开始
    / : 表示相对路径,相对于某个文件

四丶文件的不经常用的模式(r+,w+,a+)

### r+ 模式  , 读写模式(先读,再写) 
    f=open('day08.txt','r+',encoding='utf-8')
    content=f.read()   		 #读完,光标在末尾
    print(content)			 
    f.write('ABC')           #写入内容也在末尾
    f.close()


### w+ 模式  , 写读模式(先清空写,再读)
    f=open('day08.txt','w+',encoding='utf-8')
    f.write('ABC')   		 #光标在末尾
    content=f.read()		 #读时,光标在末尾 .读不到内容
    print(content)
    f.close()


### a+ 模式  , 追加写读模式(先写,再读)
    f=open('day08.txt','a+',encoding='utf-8')
    f.write('ABC')	   		#追加写,光标在末尾
    content=f.read()		#读时,光标在末尾 .读不到内容
    print(content)
    f.close()

五丶文件其他操作

###文件操作常用的方法
    f=open('a','r',encoding='utf-8')

    f.tell()  # 查看光标 ,返回的是光标当前位置,按照字节算


    f.seek()  # 移动光标   (参数以:偏移量,参数二:位置)
        seek(0,0) #移动文件开始位置
        seek(0,1) #光标当前位置
        seek(0,2) #移动到文件的末尾位置
        seek(3)   #按照字节移动


    f.truncate()   #截断, 按照字节进行截断 , 如果没有参数就按照光标来截断,如果有参数截断到参数位置

六丶with open

##面向对象的上下文管理,
## 自动关闭文件
## 可以同时打开多个文件
    with open('day08.txt','r',encoding='utf-8')  as f  , \ 
         open('new_day08.txt','w',encoding='utf-8') as f1 :
       		 for line in f:
           		 print(line)

七丶修改文件(不废话,看下面程序👇)

####修改文件内容,并替换
import os
import time
with open('alex','r',encoding='utf-8') as f1,\
    open('new_line','w',encoding='utf-8') as f2:
    for line in f1:      	  #循环读取原数据
        print(line)     
        new_line=line.replace('sb','good')  #修改指定内容
        f2.write(new_line)    #循环写入到新文件中

        
time.sleep(5)             	  #时间模块,
os.remove('alex')             #移除旧文件

time.sleep(5)
os.rename('new_line','alex')  #更改新文件的名字
posted @ 2019-06-13 14:50  染指未来  阅读(219)  评论(0编辑  收藏  举报