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

    一、文件操作
      open()文件句柄
      open()打开一个文件,获取的是文件句柄
    f = open("胡辣汤.txt", mode="r", encoding="utf-8")
    读取文件中的内容,f 变量,操控 胡辣汤.txt 文件的句柄
    read(n)  #读取n个字符
    content = f.read(3)
    content = f.read() #一次性全部读取出来
    line = f.readline() #读取一行数据
    print(line.strip()) #strip()去掉空白,空格 	 
    
    print(line, end="") #也是去掉空白,空格 	 
    
    lst = f.readlines() #一次性全部读取出来,返回的是列表
    print(lst)
      read和readlines 正常情况下不会用到

      文件句柄是一个可迭代的对象
    #必须掌握
    f = open("胡辣汤", mode="r", encoding="utf-8")
    for line in f:   #读取文件中的内容。 一行一行的读取。每次读取的内容交给前面的变量
        print(line, end="")

     

    
    
    二、路径问题
      1、绝对路径(当文件路径是固定的时候)
      从磁盘根目录找文件。 Windows下用的是c, d, e,f Linux:userinxxxx
      2、相对路径(用的多)
      相对路径相当于当前程序所在的文件夹
      ../ 表示上一层文件夹
      注意: 转移字符,有固定的含义的。推荐在路径前面加r
    f = open(r'E:哈哈	
    护士模特少妇.txt', mode='r', encoding='utf-8')
    print(f.read())

     

    三、文件操作的相关模式
      1、mode
        mode: r(只读), w(只写), a(追加写入)
       当mode="w"时每open一次,就会清空一次文件(慎用)
    复制代码
    f = open(r"taibai", mode="w", encoding="utf-8") #可以帮我们创建文件
    f.write("太白")
    f.write("很白")
    f.close()
    
    f = open(r"taihei", mode="a", encoding="utf-8")
    f.write("太黑
    ")
    f.write("很黑
    ")
    f.close()
    复制代码
        mode: rb(只读), wb(只写), ab(追加写入)   b  -bytes 读取和写入的都是字节,用来操作非文本文件(图片、音频、视频)
    复制代码
    f1 = open(r"c:胡一菲.jpg", mode="rb")
    f2 = open(r"d:胡一菲.jpg", mode="wb")
    
    for line in f1:  #分批量读取内容
       f2.write(line)  #open()出来的结果可以使用read()或者write, 根据mode来看
    f1.close()
    f2.close()
    复制代码
        mode: r+(读写), w+(写读), a+(追加写读) #同理 r+b,w+b,a+b
    复制代码
    r+,
    正常的
    f = open("person", mode="r+", encoding="utf-8")
    content = f.read()
    f.write("黄蓉")
    print(content)
    
    错误的示范
    f = open("person", mode="r+", encoding="utf-8")
    f.write("杨千桦") # 默认如果直接写入的话。 在开头写入。 覆盖开头的内容
    content = f.read()
    print(content)
    
    r+
    坑: 不论你读取多少内容。再次写入的时候都是在末尾
    f = open("person", mode="r+", encoding="utf-8")
    info = f.read(3)
    f.write("胡辣汤")
    print(info)
    
    
    w+
    f = open("person", mode="w+", encoding="utf-8") # 先清空。 然后再操作
    f.write("你好。 我叫肿瘤君")
    content = f.read() # 写入东西之后。 光标在末尾。 读取不到内容的
    print(content)
    f.close()
    
    
    a+, 不论光标在何处 写入的时候都是在末尾
    f = open("person", mode="a+", encoding="utf-8")
    f.write("我叫李嘉诚") # 默认写在末尾
    content = f.read()
    print(content)
    f.close()
    复制代码
      2、文件复制
    复制代码
    f1 = open(r"c:日记本.txt", mode="r", encoding="utf-8")
    f2 = open(r"d:日记本.txt", mode="w", encoding="utf-8")
    for line in f1:  #从f1中读取数据
        f2.write(line)    #写入到f2中
    f1.close()
    f2.close()
    复制代码
    
    
    四、相关操作
    f = open("person", mode="r", encoding="utf-8")
    info = f.read(3)  #读取三个字符
    #seek()移动光标
    f.seek(3)
    info = f.read(3)
      seek(参数1, 参数2)
      参数1表示的是偏移量,移动多少个单位
      参数2表示从什么位置进行偏移
      0: 开头
      1: 当前位置
      2: 末尾

      把光标移动到文件的开头:seek(0)
      把光标移动到末尾:seek(0, 2)
    复制代码
    print(f.read(2))  #读取两个字符。
    f.seek(0)
    print(f.read(2))  #读取两个字符,和上次读取的相同
    
    tell() 程序返回当前光标的位置
    info = f.read(3)
    print(info)
    print(f.tell())  #获取光标位置
    复制代码
      truncate()  截取文件,慎用
      尽量不要瞎测试 w, w+, w+b,truncate()
    复制代码
    f = open(r"C:Program Files (x86)TencentQQBinQQScLauncher.exe", mode="r+", encoding="utf-8")
    f.seek(5) # 光标移动到5
    f.truncate() # 默认从开头截取到光标位置
    # f.truncate(3) # 从头截取到3
    f.close()
    复制代码

       QQ就GG了

    五、文件修改
    复制代码
    import os  # 导入os模块
    
    import time  # 时间模块
    
    # 优点:不用关闭句柄, 自动关闭连接
    with open("唐诗", mode="r", encoding="utf-8") as f1, 
            open("唐诗_副本", mode="w", encoding="utf-8") as f2:
        for line in f1:
            line = line.replace("善良", "sb")
            f2.write(line)
    
    time.sleep(5)
    os.remove("唐诗")  # 删除源文件
    time.sleep(5)
    os.rename("唐诗_副本", "唐诗")  # 把副本改名成源文件
  • 相关阅读:
    window下eclipse4.5+hadoop2.6.1开发环境配置
    sqoop1.4.6从mysql导入hdfshivehbase实例
    sqoop1.9.7安装和使用
    sqoop1.4.6导出oracle实例
    sqoop1.4.6配置安装
    java 操作hbase1.2
    hbase-1.2.5完全分布式部署
    hadoop2.6环境中部署hive1.2.2的错误
    hive 创建表和导入数据实例
    hive1.2.2部署
  • 原文地址:https://www.cnblogs.com/NATO/p/9870625.html
Copyright © 2011-2022 走看看