zoukankan      html  css  js  c++  java
  • python文件操作

    python/文件操作:

     1.打开文件

    1
    2
    3
    使用open()
     
    文件句柄 = open('文件路径''模式')

    2.文件操作

    1
    打开文件时,需要指定文件路径和以何等方式打开文件,
    打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

    打开文件的模式有:

    r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
    w,只写模式【不可读;不存在则创建;存在则清空内容】
    x, 只写模式【不可读;不存在则创建,存在则报错】
    a, 追加模式【可读;   不存在则创建;存在则只追加内容】
      
     
    "+" 表示可以同时读写某个文件
     
    r+, 读写【可读,可写】
    w+,写读【可读,可写】
    x+ ,写读【可读,可写】
    a+, 写读【可读,可写】
      
     "b"表示以字节的方式操作
     
     
    rb  或 r+b
    wb 或 w+b
    xb 或 w+b
    ab 或 a+b
     注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
     
    3.关闭文件
     
      使用close()
     
    补充:with语句自带使用close()方法, 这也是为了防止打开文件忘记关闭
     
    比如:
     
    with open() as f_read:#打开文件
     
    是不需要添加close()的。

    二.文件操作

    1.read
     
    文件名.read(n):读取指定个数的字符,文件从光标位置开始
     
    注意:python3版本读取的是字符
     
            python2版本读取的是字节
     
    在读取完第一次字符时,第二次读取从上次读取完的字符开始
     
    比如:
    f.readline 读取一行,光标到下一行行首
    f.readlines 显示列表结果,每一个元素是一行内容
     
    行与字符串的拼接
    使用join用法
    文件名.join([文件名,“需要添加的字符串”])
    循环整个文件,并在一行中拼接使用for循环
     
    2.write
    f =open(name,mode=w) 修改文件可读权限
    文件名.write("")   覆盖文件信息
     
    文件名.write("
    ") 换行
     
    f =open(name,mode="a")追加信息,原来文件信息不变
     
    f =open(name,mode="x")原有的文件不覆盖,会报错;没有的文件重新创建
     
    f=write("")把内容添加到内存,在一定时间内显示出来
     
    f.writelines(["11
    ","22
    "])写多行
    f.truncate() 截断  只能在写权限操作
    3.可读可写模式:
    f = open("test",mode="r",encoding="utf8")
    
    data = f.read(5)
    data2 = f.read(6)
    print(data)
    print(data2)
    得到的答案是
    globa
    l
    r+  追加写
        默认光标在开始位置
    w+  首先会覆盖,清空,然后再写,seek调整
     
    a+  总是在最后位置添加。光标在文件最后位置
        无论光标在什么位置,一定是追加写:
        想读取内容:seek调增
     
    4.flush操作
    f=flush("") 直接显示,内容直接存储在硬盘上
    比如:
    进度条操作
    sys.stdout.write("")相当于print
      sys.stdout 文件
      循环打印#
    import sys
    for i in range(10):
      sys.stdout.write("#")
      sys.stdout.flush()
      import time
      time.sleep(0.5)
    显示百分比
    import sys
    for i in range(6):
        s = "
    %s%% %s"%(i,"?"*i)
        sys.stdout.write(s)
        sys.stdout.flush()
        import time
        time.sleep(0.5)
    

    二.其他操作 

    1.tell和seek:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
         tell:查询文件中光标位置
     
         seek:光标定位
     
    f = open('file','r')
    print(f.tell())  #光标默认在起始位置
    f.seek(10)    #把光标定位到第10个字符之后
    print(f.tell())  #输出10
    f.close()
    ----------------------
    f = open('file','w')
    print(f.tell())  #先清空内容,光标回到0位置
    f.seek(10)   
    print(f.tell())
    f.close()
    ----------------------
    f = open('file','a')
    print(f.tell())  #光标默认在最后位置
    f.write('你好 世界'
    print(f.tell())  #光标向后9个字符,仍在最后位置
    f.close()
      2.flush 同步将数据从缓冲转移到磁盘:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    示例,实现进度条功能
     
    import sys,time  #导入sys和time模块
    for in range(40):
      sys.stdout.write('*')
      sys.stdout.flush()  #flush的作用相当于照相,拍一张冲洗一张
      time.sleep(0.2)
    下面代码也能够实现相同的功能
    import time
    for in range(40):
      print('*',end='',flush=True) #print中的flush参数
      time.sleep(0.2)
    2.truncate 截断:
    1
    2
    3
    4
    5
    6
    7
    8
    不能是r模式下执行,
     
    w模式下,已经清空所有数据,使用truncate没有任何意义,
     
    a模式下,截断指定位置后的内容。
     
     f = open('file','a')
     f.truncate(6) #只显示6个字节的内容(6个英文字符或三个汉字),后面的内容被清空。
  • 相关阅读:
    Mybatis的分页查询
    Mybatis的动态标签
    mybatis include标签
    mybatis 的<![CDATA[ ]]>
    Mybatis 示例之 SelectKey(转)
    mybatis foreach标签
    加密解密
    Sensor传感器(摇一摇)
    二维码的生成和扫描
    Camera摄像头
  • 原文地址:https://www.cnblogs.com/wilson-wu/p/8110891.html
Copyright © 2011-2022 走看看