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

    f1 = open(r'd:王凯.txt', encoding='utf-8', mode='r')
    content = f1.read()
    print(content, type(content))
    f1.close()

    操作过程:

    open()内置函数,操作文件
    f1 文件句柄 f1,fh,file_handle,f....
    f1.close()
    打开文件产生文件句柄。
    对文件句柄进行相应的操作(读,写,追加,读写....)。
    关闭文件句柄。

    1.1读:
    r
    # 第一种 read() 全部读取
    f1 = open('alex与sb', encoding='utf-8')
    content = f1.read()
    print(content, type(content))
    f1.close()

    # 第二种 read(n)  r:模式 按照 字符去读取
    f1 = open('alex与sb', encoding='utf-8')
    content = f1.read(3)
    print(content)
    f1.close()

    # 第三种 readline() 按行读取
    f1 = open('alex与sb', encoding='utf-8')
    print(f1.readline().strip())
    print(f1.readline().strip())
    print(f1.readline().strip())
    print(f1.readline().strip())
    f1.close()
    print(666)

    # 第四种 readlines() 返回一个列表,列表中的每个元素是原文件的一行
    f1 = open('alex与sb', encoding='utf-8')
    content = f1.readlines()
    print(content, type(content))
    f1.close()

    # 第五种 for循环   *** 推荐使用
    f1 = open('alex与sb', encoding='utf-8')
    for line in f1:
        print(line.strip())
    f1.close()

    rb   #专门用来读图片或者视频
    先来一个图片比如起名:有点大.jpg
    f1 = open('有点大.jpg', mode='rb')
    content = f1.read()
    print(content)

    f2 = open('不大呀.jpg',mode='wb')
    f2.write(content)
    f1.close()
    f2.close()

    执行完之后:出来了

    r+ 先读后写(后追加)
    log3内容为

    f1 = open('log3', encoding='utf-8', mode='r+')
    content = f1.read()
    print(content)
    f1.write('666')
    f1.write('来了')
    print(f1.read())
    f1.close()

    执行完查看

    1.2 写

    w
    # 1,没有文件创建文件写入内容。
    # 2,有文件先清空后写入。
    f1 = open('log1', encoding='utf-8',mode='w')
    f1.write('又好了....')
    f1.close()

    查看log1

    # wb 上面有代码

    1.3 a 追加
    # 1,没有文件创建文件写入内容。
    # 2,有文件直接在后面追加。
    f1 = open('log3', encoding='utf-8',mode='a')
    f1.write('
    喇叭坏了 fuck')
    f1.close()

    二、文件操作的常用方法
    # readable() 是否可读 
    # writable() 是否可写

    f1 = open('log1', encoding='utf-8',mode='w') f1.write('又好了....') if f1.readable(): print(f1.read()) # print(f1.readable()) f1.close()
    # tell() 告诉你光标的位置(按照字节)
    # seek() 调整光标的位置(按照字节)
    f1 = open('alex与sb', encoding='utf-8')
    content = f1.read(3)   #3是指读了3个字符 如果是()是指的读的全部字符
    print(f1.tell())   #读了3个字符,也就是 太白金 三个字,那就是9个字节,所以结果是9
    f1.close()
    
    f1 = open('alex与sb', encoding='utf-8')
    f1.seek(12)     #12是指按照12个字节计算的话,是4个文字,所以 太白金星 4个字就没有了
    content = f1.read()
    print(content)   
    f1.close()

    修改一个文件的过程:

    1,以读的模式打开原文件
    2,以写的模式打开一个新文件
    3,对原文件的内容进行修改,形成新内容写入新文件
    4,删除原文件
    5,将新文件重命名为原文件。

    练习题:

    2,有如下文件:

    -------

    alex是老男孩python发起人,创建人。

    alex其实是人妖。

    谁说alex是sb?

    你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。

    ----------

    将文件中所有的alex都替换成大写的SB。

    # read() 占用内存

    import os #调用系统模块 with open('alex美文', encoding='utf-8') as f1, open('alex美文.bak',encoding='utf-8',mode='w') as f2: #1,以读的模式打开原文件alex美文 2,以写的模式打开一个新文件alex美文.bak old_content = f1.read() new_contenet = old_content.replace('SB', 'alex') #3,对原文件的内容进行修改,形成新内容写入新文件 f2.write(new_contenet) os.remove('alex美文') #4,删除原文件 os.rename('alex美文.bak','alex美文') # 5,将新文件重命名为原文件。 #但是上面的这个是把文件全读下面,不太好,我们推荐使用下面的for循环方式。 import os #调用系统模块 with open('alex美文', encoding='utf-8') as f1, open('alex美文.bak',encoding='utf-8',mode='w') as f2: #1,以读的模式打开原文件alex美文 2,以写的模式打开一个新文件alex美文.bak for line in f1: #for循环 new_line = line.replace('alex','SB') #把alex替换成SB #3,对原文件的内容进行修改,形成新内容写入新文件 f2.write(new_line) os.remove('alex美文') #4,删除原文件 os.rename('alex美文.bak','alex美文') # 5,将新文件重命名为原文件。
    
    
  • 相关阅读:
    OpenCL、CUDA
    最小和最廉价的超级计算机,DIY的
    组装属于您自己的Tesla个人超级计算机
    多处理器系统
    开源项目Spark简介
    基于Cassandra的日志和分布式小文件存储系统【1】
    网络广告js备忘【2】
    网络广告js备忘【1】
    成功产品的意外
    Cassandra HBase和MongoDb性能比较
  • 原文地址:https://www.cnblogs.com/wangkaiok/p/9872515.html
Copyright © 2011-2022 走看看