zoukankan      html  css  js  c++  java
  • 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")                     #删除文件夹
  • 相关阅读:
    C#关于MSMQ通过HTTP远程发送专有队列消息的问题
    ASP.NET中进行消息处理(MSMQ) 三
    ASP.NET中进行消息处理(MSMQ) 二
    ASP.NET中进行消息处理(MSMQ) 一
    日志插件 log4net 的使用
    在64位windows下使用instsrv.exe和srvany.exe创建windows服务
    Windows下MemCache多端口安装配置
    把页面上DIV元素生成图片
    memcached协议
    没钱买珍珠首饰,能够画一个
  • 原文地址:https://www.cnblogs.com/lyh-520/p/9304419.html
Copyright © 2011-2022 走看看