zoukankan      html  css  js  c++  java
  • python 8 days

     

    python 8 days

    文件操作初始

    文件句柄:

    f1 = open('d:护士空姐学生少妇联系方式.txt', encoding='utf-8', mode='r')
    print(f1.read())
    f1.close()

    open python的内置函数,但是底层调用的windows系统的open功能,open功能就是操作文件用的。

    windows系统默认的编码方式gbk,linux,macos:utf-8

    文件操作流程:

    1,打开文件,产生文件句柄。
    2,对文件句柄进行相应的操作。
    3,关闭文件。

    "r"、"w"、"a"三大文件用法

    读模式:r的五种用法

    read
    read(n)
    readline()
    readlines()
    for循坏
    

    read:

    f2 = open('护士学生空姐班主任.txt', encoding='utf-8')
    print(f2.read())
    f1.close()

    r rb
    1,f.read() 全部读出来。
    f2 = open('护士学生空姐班主任.txt', encoding='utf-8')
    print(f2.read())
    f2.close()

     read(n): 

    f.read(n)
    f1 = open('护士学生空姐班主任.txt', encoding='utf-8')
    print(f1.read(3))
    f1.close()
    r模式:read(n) n 是按照字符读取。
    rb模式:read(n) n 是按照字节读取。
    

    readline():

    readline() 按行读取
    f1 = open('护士学生空姐班主任.txt', encoding='utf-8')
    print(f1.readline())
    print(f1.readline())
    print(f1.readline())
    print(f1.readline())
    f1.close()
    

    readlines():

    readlines() 返回一个list 里面的元素是每一行。
    f1 = open('护士学生空姐班主任.txt', encoding='utf-8')
    print(f1.readlines())
    for line in f1.readlines():
    print(line)
    f1.close()
    

    for循坏:

    for 循环去读取
    f1 = open('护士学生空姐班主任.txt', encoding='utf-8')
    for line in f1:
    print(line)
    f1.close()
    rb、 r+ 、r+b的用法:

    rb模式:后面不加encoding='utf-8'
    rb模式 非文字类的文件
    f1 = open('护士学生空姐班主任.txt',mode='rb')
    print(f1.read(1))
    f1.close()
    

    r+:读写,先读后写

    f1 = open('护士学生空姐班主任.txt', encoding='utf-8', mode='r+')
    print(f1.read())
    f1.write('666')
    f1.close()
    

    r+b读写,先读后写

    f1 = open('护士学生空姐班主任.txt', mode='r+b')
    print(f1.read())
    f1.write('666'.encode('utf-8'))
    f1.close()
    
    写模式:W 的四种用法
    W:没有文件,创建文件写内容。
    W:如果有文件,清空原文件,写入新内容。
    w
    wb
    w+
    w+b
    W:
    f1 = open('log1', encoding='utf-8', mode='w')
    # f1.write('老男孩是最好的培训学校...')
    # f1.close()
    
    # f1 = open('log1', encoding='utf-8', mode='w')
    # f1.write('法国进口分类结果')
    # f1.close()
    

    wb:

    f1 = open('log2', mode='wb')
    # f1.write('法国进口分类结果'.encode('utf-8'))
    # f1.close()
    

    w+:先写后续

    f1 = open('log1', encoding='utf-8', mode='w+')
    f1.write('老老男孩.....')
    f1.seek(0)  # 调整光标
    print(f1.read())
    f1.close()
    

    w+b:操作用法同上

    追加模式:

    a
    ab
    a+
    a+b
    

    a: 

    a:没有文件,创建文件写内容。
    a+:有文件,直接在原文件的后面追加新内容。
    f1 = open('log3', encoding='utf-8', mode='a')
    f1.write('barry')
    f1.close()
    

    a+:追加可续

    f1 = open('log3', encoding='utf-8', mode='a+')
    f1.write('鞠先生是个大帅哥')
    f1.seek(0)
    print(f1.read())
    f1.close()
    
    f1 = open('log3', mode='ab')
    f1.write('中国'.encode('gbk'))
    f1.close()
    
    非文字的文件的读取写入
    f1 = open('11.jpg', mode='rb')
    content = f1.read()
    print(content)
    f1.close()
    f2 = open('小猪佩奇.jpg', mode='wb')
    f2.write(content)
    
    seek: 按照字节去调整光标
    f1 = open('log1', encoding='utf-8')
    f1.seek(3)
    print(f1.read())
    f1.close()
    
    tell 告诉光标的位置
    f1 = open('log1', encoding='utf-8')
    print(f1.tell())
    print(f1.read())
    print(f1.tell())
    f1.close()
    
    truncate 对原文件进行截取内容,以字节形式,只能在a模式下使用。
    f1 = open('log1', encoding='utf-8', mode='a')
    f1.truncate(3)
    f1.close()
    
    文件操作的另一种写法
    with open() as 不用主动关闭 f1.close()
    同一open 可以操作多个文件
    with open('log1', encoding='utf-8') as f1:
    print(f1.read())
    with open('log1', encoding='utf-8') as f1,
    open('log2',encoding='utf-8', mode='w') as f2:
    print(f1.read())
    f2.write('666')
    with open('log1', encoding='utf-8') as f1:
    content = f1.read()
    f1.close()
    pass
    with open('log1', encoding='utf-8',mode='w') as f2:
    f2.write('333')
    
    readlable() writeable()判断是否可读或者可写
    f1 = open('log1', encoding='utf-8')
    print(f1.readable())
    print(f1.writable())
    f1 = open('log1', encoding='utf-8',mode='r+')
    print(f1.readable())
    print(f1.writable())
    

    文件的改:

    1,打开原文件 old_file,将原内容读取到内存。
    2,创建一个新文件new_file。
    3,将原内容通过你改写形成新内容,写入到新文件。
    4,将原文件删除。
    5,将新文件重命名成原文件。
    
    方法一,原文件内容不打,可以用此方法,但是此方法还是很low。
    import os
    with open('change', encoding='utf-8') as f1,
    open('change.bak', encoding='utf-8', mode='w') as f2:
    old_content = f1.read()
    new_content = old_content.replace('alex', 'SB')
    f2.write(new_content)
    os.remove('change')
    os.rename('change.bak', 'change')
    
    方法二
    import os
    with open('change', encoding='utf-8') as f1,
    open('change.bak', encoding='utf-8', mode='w') as f2:
    for line in f1:
    new_line = line.replace('SB', 'alex')
    f2.write(new_line)
    os.remove('change')
    os.rename('change.bak', 'change')
    

      







     

     

     

      

     

     

  • 相关阅读:
    316 Remove Duplicate Letters 去除重复字母
    315 Count of Smaller Numbers After Self 计算右侧小于当前元素的个数
    313 Super Ugly Number 超级丑数
    312 Burst Balloons 戳气球
    309 Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期
    Java 类成员的初始化顺序
    JavaScript 全局
    HTML字符实体
    Java中的toString()方法
    JavaScript 弹窗
  • 原文地址:https://www.cnblogs.com/juxiansheng/p/9008628.html
Copyright © 2011-2022 走看看