11. 文件基本操作、上下文管理、IO流、使用工具

   文件基本操作   

一、文件

持久储存:

保存内存中数据都是易丢失的,只有保存在硬盘中才能持久的存储,保存在硬盘中的基本方法就是把数据写入文件中

file = open("text.txt","w+")               #打开文件
file.write("hello python !!!")             #写入文件
file.flush()                               #保存文件
print(file.tell())                         #查看文件指针
print(file.seek(0))                        #移动文件指针
print(file.read())                         #读取文件
print(file.readline())                     #每次只能读取一行
# print(file.readlines() )                 #把每一行的内容读取出来当成一个元素,放到一个列表里面
file.close()                               #关闭文件


16
0
hello python !!!
with open("text.txt","w+") as f:           #不需要关闭  会对文件自动保存和关闭
    f.write("hello python !!!")
    f.flush()
    f.tell()
    f.seek(0)
    print(f.read())

hello python !!!

二、文件打开的模式

三、其他模式

 rb   rb+     wb     wb+    ab    ab+ 

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

     上下文管理     

通过这两个方法可以方便的实现上下文管理

with会把 __enter__ 的返回值赋值给 as 后的变量

class MyClass:       #上下文管理器

    def __enter__(self):        #进入   进入时需要执行的代码,相当于准备工作
        print("开始运行的时候调用了我")
        return "开始了"
    def __exit__(self, exc_type, exc_val, exc_tb):       #退出  退出时需要执行的代码,相当于收尾工作

        print("结束运行的时候调用了我")

with MyClass() as a:   #使用with打开文件,则文件不需要自己关闭,会自动的关闭
    print(a)
    for i in range (1,6):
        print(i)

开始运行的时候调用了我
开始了
1
2
3
4
5
结束运行的时候调用了我

           IO流          

一、StringIO

StringIO在内存中如同打开文件一样操作字符串,因此也有文件的很多方法

当创建的StringIO调用 close() 方法时,在内存中的数据会被丢失

import io
sio = io.StringIO          #创建IO操作
sio.write('hello python')           #写入

# sio.seek(0)
# print(sio.read())
print(sio.getvalue())         #读取
sio.close()

二、BytesIO

BytesIO 和 StringIO 类似,但是BytesIO操作的是 Bytes数据

import io
sio = io.BytesIO           #创建IO操作
sio.write(b"abcd")           #写入

# sio.seek(0)
# print(sio.read())
print(sio.getvalue())         #读取
sio.close()

       使用工具       

一、os 操作系统交互

        os 模块提供python和操作系统交互的接口

os 提供了Python和操作系统交互方式,只要是和操作系统相关,就可以尝试在os模块中找方法

import os
os.system("ls")       #直接调用系统命令
os.system("pwd")
#通用路径操作
import os
os.path
<module 'posixpath' from '/usr/lib/python3.5/posixpath.py'>
os.path.join("/home/pyvip","py_case1")
'/home/pyvip/py_case1'
#文件目录操作
os.mkdir("/home/pyvip/projects/home/pyvip/projects/基础班/ly")
os.rename("ly","ly1")

二、shutil 高级文件操作

        shutil 模块提供了许多关于文件和文件集合的高级操作

import shutil
shutil.copytree("ly1","lll")          #复制文件件
shutil.move("with.py","lll")        #移动文件
shutil.rmtree("lll")                     #删除文件夹
原文地址:https://www.cnblogs.com/lyh-520/p/9304419.html