码迷,mamicode.com
首页 > 编程语言 > 详细

python基础之文件操作

时间:2020-01-20 15:07:54      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:路径   关闭   操作系统   adl   err   空格   字符   utf-8   不同   

文件操作

  • 文件操作 就是 操作文件

  • 文件操作的作用: 持久化存储

    1.file = 路径

    2.mode = 操作文件的方式

    r只读文本 w清空写文本 a追加写文本 ######

    rb只读字节 wb清空写字节 ab追加写字节 ###

    3.encoding = 文件的编码

    4.文件句柄(变量名f)

一、r: 读

  • f = open("test",mode = "r",encoding = "utf-8")

  • 打开 通过python向操作系统发送指令

  • 文件读取时只能读一遍,执行第二遍的时候是空的

    #print(f.read( ))    #全部读取
    print(f.read(3))  #模式的r的情况下按照字符读取
    print(f.readline().strip)   #读取一行
    print(f.readlines())  #读取多行,以列表的形式存储  输出结果是列表形式
  • 路径:

    • 相对路径:相对与当前运行的文件目录

    • import os
      
      print(os.getcwd( ))    #工作路径(当前py文件的父级目录路径)
    • 绝对路径:从磁盘根部开始查找的就是绝对路径

  • 转义

      1. \ ? 普通的
      1. r"C:\Python\test\xxxx" 防止路径中出现,换行符,空格之类的,导致计算机误认为指令
    • f = open(r"C:\Python\test\xxxx",mode="r",encoding="utf-8")
      a = f.read()
      print(a)
  • rb 读字节 --- 爬虫 读取出来的全部是字节码

    f=open("test.text","rb",encoding="utf-8")
    print(f.read())    报错!  ValueError: binary mode doesn't take an encoding argument
    因为rb(rb+)操作时不支持指定encoding参数 所以不写encoding  如下方式
    f = open("2.png","rb")
    print(f.read())

二、 写

  • w 清空写:有文件时清空文件,没有文件时创建文件

    1.打开文件时自动清空文件内容

    2.写入内容

  • f = open("test","w",encoding="utf-8")
    f.write("今日是好日,明日会更好")
    f.flush()  # 刷新
    f.write("明日是好日,后日会更好.")
    f.close()  # 关闭文件
    打开文件,操作文件,关闭文件
  • wb : 清空写字节 爬虫

    • f = open("1.png","wb")
      f1 = open("2.png","rb")
      f.write(f1.read())

三、追加

  • 追加a 一直在文件的末尾进行添加

    f = open("test","a",encoding="utf-8")
    f.write("wdadwa")
  • ab追加写字节

    f = open("1.png","wb")
    f1 = open("2.png","ab")
    f.write(f1.read())
    在f末尾追加f文本内容字节

四、其他

  • +操作

  • r+ 读写 可读可写

    特殊的操作:

    先读后写, 写的东西在test原来存在的内容后面添加
    f = open("test","r+",encoding="utf-8")
    a = f.read()  
    f.write("这是读写啊")                可读可写
    #如果只“r”的话,f.write()会报错io.UnsupportedOperation: not writable  不支持写
    
    如果先写后读,会覆盖之前写的内容
    f = open("test","r+",encoding="utf-8")
    f.write("这样读取之后写入的内容会覆盖之前的内容") 
    f.seek(0,0)  #移动光标  移动到文件头部
    a = f.read() 
    因为是先写的,所以光标在末尾,如果不移动光标到头部,读取不到内容 (这样跟w+没有什么区别了就,所以尽量使用r+先读后写)
  • w+ 清空写,读

    f = open("test","w+",encoding="utf-8")
    f.write("哈哈哈")
    f.seek(0,0)  #移动光标  移动到文件头部
    print(f,read())
    如果不seek移动光标会读不到内容
  • a+:追加写,读

    f = open("test","a+",encoding="utf-8")
    f.write("呵呵")
    f.seek(0,0)  #移动光标  移动到文件头部
    print(f.read())
    就是先写后读,写的内容追加到末尾,然后再读都能读到,而w+是清空,读只能读到写入覆盖后的内容,a+就像r+和w+的结合体
# 最常用的是:r,w,a a+(没文件时) r+(覆盖一些内容)
# 光标
# f = open("test","r",encoding="utf-8")
# f.seek(0,0)   # 移动文件头部
# f.seek(0,1)   # 移动到光标当前位置
# f.seek(0,2)   # 移动到文件末尾
# f.seek(3)     # 移动3个字节,根据编码不同决定移动的字节大小
# print(f.read())
# print(f.tell())  # 查看光标 返回的是光标位置之前内容字节的数量

with open

特点:

1 自动关闭文件

2 可以同时操作多个文件

as 起别名

with open("test1","r",encoding="gbk") as f,open("test","r",encoding="utf-8")as f1:

print(f.read())
print(f1.read())

文件的修改

"w"没文件的时候创建文件

with open("test", "r", encoding="utf-8")as f,         open("test1", "w", encoding="utf-8")as f1:
    for i in f:
        f1.write(i.replace("嘿嘿", "sb"))
        f1.flush()

import os
os.rename("test","test2")
os.rename("test1","test")    源文件test给了test2,(一个暂时不存在的)  修改过的test1给了test
重点记住文本中存储的都是字符串

python基础之文件操作

标签:路径   关闭   操作系统   adl   err   空格   字符   utf-8   不同   

原文地址:https://www.cnblogs.com/zzsy/p/12217712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!