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

    1.今日内容

    1. 文件操作的初识
    2. 文件操作的读
    3. 文件操作的写
    4. 文件操作的追加
    5. 文件的其他操作
    6. 打开文件的另一种方式
    7. 文件的改

    2.具体内容

    1. 文件操作的初识

      • 文件的操作步骤

        • 打开文件
        • 对文件句柄进行相应的操作
        • 关闭文件
        f = open('/Users/Documents/python文件操作.txt',mode = 'r',encoding = 'utf-8')
        content = f.read()
        f.close()
        '''
        f = open('文件路径',mode = '文件操作方式',encoding = '编码')
        f 文件句柄
        文件操作
        f.close()
        '''
        '''
        编码可以不写:默认操作系统默认的编码
        windows:gbk
        linux:utf-8
        os:utf-8
        '''
        
    2. 文件操作的读

      • r --- 读取文本文件

        • read() --- 全部读取
        • read(3) --- 通过字符来读取
        • readline() --- 读取一行
        • readlines() --- 一行一行的读取并存放到列表中
        • for
        #read 全部读取。
        f = open('文件的读',encoding = 'utf-8')
        content = f.read()
        print(content,type(content)) # 两岸猿声啼不住 str
        f.close()
        
        #read(3)按照字符读取
        f = open('文件的读',mode = 'r',encoding = 'utf-8')
        content = f.read(3)
        print(content) # 两岸猿
        f.close
        
        #readline() 读取一行
        f = open('文件的读')
        content = f.readline()
        print(content) 
        #两岸猿声啼不住
        #
        f.close()
        
        #readlines() 返回一个列表,列表的每一个元素是原文件的每一行
        f = open('文件的读')
        content = f.readlines()
        print(content)
        
        for 读取
        f = open('文件的读')
        for line in f:
          print(line)
        f.close()
        
      • rb --- 读取非文本文件(不能指定编码)

        f = open('跑车.jpeg',mode = 'rb')
        content = f.read()
        print(content)
        f.close()
        
      • r+ --- 读并追加 先读后写(顺序不能错)

        f = open('文件的读',mode = 'r+')
        content = f.read()
        f.write('加上了么')
        f.close()
        
    3. 文件的写

      • w --- 写入文本文件(如果文件存在先清空在写入,如果不存在就新建)

        f = open('文件的写',mode = 'w')
        f.write('写了么')
        f.close()
        
      • wb --- 写入非文本文件(不能指定编码)

        f = open('跑车.jegp',mode = 'rb')
        content = f.read()
        f.close()
        f1 = open('跑车2.jepg',mode = 'wb')
        f1.write(content)
        f1.close()
        
      • w+ --- 写读,先写后读 ,需要移动光标

        f = open('文件的写',mode = 'w+')
        f.write('人的一切痛苦,本质都是对自己无能的愤怒')
        f.seek(0,0) #移动光标到文件的开头
        content = f.read()
        print(content)
        f.close()
        
    4. 文件的追加

      • a --- 追加写入文本文件(在原文件的末尾接着写)

        f = open('文件的追加',mode = 'a')
        f.write('读万卷书,行万里路')
        f.close()
        
      • ab --- 追加写入非文本文件(不能指定编码)

      • a+ --- 追加写读,先写后读,需要移动光标

        f = open('文件的写读',mode = 'a+')
        f.write('拉斯维加斯')
        f.seek(0,0)
        print(f.read())
        f.close()
        
        
    5. 文件的其他操作

      • .tell() 查看光标当前位置(返回的是字节数)

      • seek('',''). 移动光标的位置

        • seek(0,0) ---移动光标到文件开头
        • seek(0,1) ---移动光标到当前位置
        • seek(0,2) ---移动光标到文件末尾
        • seek(9) --- 只有一个数时,移动到开头后的第几个字节位置
      • flush() 强制刷新

        f = open('文件的写读')
        print(f.tell()) #0
        print(f.read()) #拉斯维加斯
        print(f.tell()) #15
        
        
    6. 文件打开的另一种方式

      • with open --- 面向对象的上下文管理

        • 可以在操作完成后自动关闭文件
        • 可以同时打开多个文件
        • with open('文件路径',mode = '操作方式',encoding = '编码') as f
        with open('文件的写') as f1,open('文件的读') as f2:
          print(f1.read())
          f2.write('火锅王朝')
        
        
    7. 文件的改

      • 当你相对原文件改动,但是想要备份原文件时,可以这样做
      with open('文件的改',mode = r)as f1,open('文件改啦',mode = 'a')as f2:
        for line in f1:
          s = line.replace('一','二')
          f2.write(s)
      import os
      os.rename('文件的改','原文件的改') --- 对原文件进行备份
      os.rename('文件改啦','文件的改') --- 把新文件改成原文件的名字
      
      
  • 相关阅读:
    windows 7下matlab R2010a输入乱码的解决方案
    用 Microsoft Visual C++ 创建一个使用 wpcap.dll 的应用程序,
    E: oss4dkms: 子进程 脚本出错postinstallation 安装升级更新时出错的解决方法
    关于linux下面挂载Windows硬盘,但是无法在Windows下看到数据
    如何读取多个文件,文件后缀名不一致,不过类似source.1 source.2 source.3等
    Fedora 12 13 14基础环境配置
    linux内核空间与用户空间信息交互方法
    HDU 1232 畅通工程(最小生成树+并查集)
    hdu 2647 Reward(拓扑排序,反着来)
    HDU 1532 Drainage Ditches (最大网络流)
  • 原文地址:https://www.cnblogs.com/xiaohei-chen/p/11889412.html
Copyright © 2011-2022 走看看