11.Python的文件操作

1.文件的基本操作

打开关闭文件

打开文件:1)f=open(file_path,mode='r')  传入表示文件路径的字符串,mode是文件打开方式,默认是'r',该句会返回一个文件                                                                对象

                 2)with open(file_path) as f       把文件对象传给f(推荐

关闭文件:f.close                                    调用文件对象的close方法

<_io.TextIOWrapper name='file.py' mode='r' encoding='UTF-8'>
<_io.TextIOWrapper name='file.py' mode='r' encoding='UTF-8'>

文件打开方式


其他模式:rb   rb+     wb     wb+    ab    ab+ 

加个b的作用:以二进制的格式打开文件,进行上述操作 。

读取/写入文件


注意:文件读取完后光标移动到文尾,再读取则为空白。

           若想重新读取,需要用f.seek(0)将光标移动到文首

读文件实例

with open('mypython.py') as f:
    content = f.read() #读取全部内容
    print(content) #输出内容(代码)
    content2 = f.read()
    print(content2) #无任何输出,文件已经读取完

    f.seek(0) #光标移动到文首
    con = f.read(10) #读取10个字符
    print(con)  #输出读到的10个字符
    con2 = f.read() #只要文件没读完便可继续读

    f.seek(0)
    cont = f.readline() #读取一行
    print(cont) #输出读到的一行

    f.seek(0)
    conten =f.readlines() #读出一个列表,每一项是一行
    print(conten)

写文件实例

with open('mypython.py','w') as f: #以只写方式打开文件,写入的内容会覆盖掉原内容
    content = '文件第一行'
    f.write(content) #写入文件
    f.flush() #刷新缓存,必要的一步,以免内容丢失
    f.close() #关闭文件

with open('mypython.py','a') as f: #以追加方式打开文件,内容追加到文尾
    content = '文件第二行'
    f.write(content)
    f.flush()
    f.close()

with open('mypython.py','w+') as f:
    content = '文件第一行'
    f.write(content)
    f.flush()
    f.seek(0) #切记要移动光标,不然读的内容为空
    con=f.readline()
    print(con)
    f.close()

文本模式与二进制模式

1)文本模式

    以str字符串形式写入,读取出的也是str文件

2)二进制模式

    以bytes字符串形式写入,读取出来的也是bytes字符串

2.StringIO与BytesIO

即是假文件,暂存于内存中,用于临时使用,关闭后数据全部丢失

首先导入io模块

import io

文本模式:f = StringIO() 

二进制模式: f = BytesIO()  均创建空文件f

例:

import  io
f = io.StringIO()
f.write('第一行\n第二行')
print(f.getvalue())
第一行
第二行

3.上下文管理

即第二种打开文件的方法

with...as..

单个文件:with open(file_path, mode='r') as f:    # 跳出with语句快的时候自动执行f.close()

多个文件:with open(file_path, mode='r') as f1,\     #一行放不开用\分割
                      open(file_path, mode='r') as f2,\

                          … :

4.常见问题处理

文件访问编码

open(file_path, mode='r', encoding='utf-8')

文件打开编码若和文件写的编码不一致会出现乱码

以下两个模块是对操作系统的文件进行的操作,也就是虚拟机下的文件

os模块的目录及文件操作


os模块的路径操作


使用前需导入os模块 import os

例:遍历某目录下的所有文件和文件夹

import io
import os
filelist = list() #文件列表
directorylist = list() #文件夹列表
def traverse(path): #遍历文件的函数
    if os.path.isfile(path): #是文件,写入文件链表
        filelist.append(os.path.basename(path))
    else: #不是文件,写入文件夹列表,后遍历文件夹下的文件
        li=os.listdir(path)
        for i in li: #循环遍历文件夹下的文件
            if os.path.isdir(i):
                directorylist.append(os.path.basename(i))
            traverse(os.path.join(path,i)) #路径合成

file = traverse('/home/pyvip/py_case') #遍历文件
print('文件:',filelist)
print('文件夹:',directorylist)
文件: ['file.py', 'fity.py', 'mypython.py', 'city.py', 'newfile.py', 'new.py', 'newfile.py']
文件夹: ['a', 'venv']


猜你喜欢

转载自blog.csdn.net/weixin_42089175/article/details/80529745