zoukankan      html  css  js  c++  java
  • 20180711

    一.文件操作

    1.初识文件操作

    使用open()函数打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作,本剧打开方式的不同,能够执行的操作也会有所差异

    常用的操作主要有: r w a r+

    ⑴只读操作    r(read)                              enconding ==> 编码格式

    例如:

      首先需要创建一个utf-8格式的文件,并填写内容

      f = open("文件名字",mode = "r",encoding = "utf - 8")

      s = f.read()       读取路径内容

      f.close()            关闭句柄

      print(s)             显示文件里面的内容                    出现的效果是==>创建文件里面的内容

    路径主要有两种:

    1.相对路径         相对于当前程序所在的文件夹            (../  :是返回上一层文件夹)  需要向上退回几层的时候就需要写几个

    2.绝对路径         ①从磁盘根目录寻找     ②互联网上的一个绝对路径

    (2)只写操作      w(write)      

    例如:     (当该文件不存在的时候,会自动添加一个文件并有添加的内容      如果该文件存在的时候,添加内容的时候,会把之前的内容全部清除,并把新的内容添加进去)

      f = open("文件名字",mode = "w", encoding = "utf-8")

      f.write("需要添加的内容")

      f.flush()            刷新操作

      f.close()

    注意:w模式下,写入之前会清除原来的内容

    (3)追加操作    a(append)

    例如:

      f = open("文件名",mode = "a",encoding = "utf - 8")

      f.write("某某某")

      f.flush()

      f.close()                               出现的效果===>会在文件原来内容的基础上,在末尾添加内容

    (4)只读字节操作      rb       b=bytes (字节)     读取到的内容直接就是字节

    例如:

      f = open("文件名",mode = "rb")

      bs = f.read()

      print(bs)                  出现的效果====>bytes,此时就需要decode解码      在文件里面会看到解码后的文字

      print(bs.decode("utf - 8"))

    注意:带b的处理的都是非文本的东西

    (5)只写字节操作     wb  

    例如:

      f = open("文件名",mode = "wb")

      f.write("你好啊".encode("utf - 8"))

      f.close()                       出现的效果===>打印你好啊

    (6)读写模式    r+      读写模式必须是先读后写

    例如:

      f = open("文件名",mode = "r+",encoding = "utf - 8")

      s = f.read()                                                r+模式,默认情况下光标在文件的开头,必须先读后写

      f.write("添加的内容")

      f.flush()

      f.close               

      print(s)                                      出现的效果===>文件原来的内容基础上,末尾添加了新的内容

    (7)写读模式   w+      (先将所有内容清空,然后写入,最后读取,但是读取的内容时空的)      

      f = open("文件名",mode = "w+",encoding= "utf - 8")

      f.write("哈哈")

      f.seek(0)                                            seek(移动光标)

      s = f.read()                              w操作会清空原来的内容

      print(s)

      f.flush()

      f.close()

    2.其他相关操作

    (1)seek(n)  光标移动到n的位置,移动的单位是字节   所以在utf - 8 的中文部分  就是三个字节  一个字

    移动到开头     seek(0)

    移动到结尾      seek(0,2)             第二个参数表示的是从哪个位置进行偏移,默认的是0,表示开头,1表示的是当前位置,2表示的是结尾

    例如:

      f = open("文件名",mode = "r+",encoding = "utf-8")

      f.seek(0)                       光标移动到开头

      s = f.read()                      读取的内容,此时光标移动到结尾

      print(s)

      f.seek(0)                          再次将光标位置移动到开头

      f.seek(0,2)                       将光标位置移动到末尾

      s1 = f.read()                          读取的内容     什么都没有

      print(s1)

    (2)内容修改

    创建新文件,把修改后的内容写入到新文件,删除老文件,重命名新文件

    例如:

      import os                         使用with open  的时候不需要关闭文件句柄

      with open("吃的",mode = "r",encoding = "utf - 8") as f1 , open("吃的_副本",mode = "r",enconding = "utf -8") as f2

      s = f1.read()                                                                                                for line in f1:          (方法2)

      ss = s.replace("肉","菜")          将源文件里面的肉改成菜                              s = line.replace("菜","肉")

      f2.write(ss)                                                                                                  f2.write(s)

      os.remove("吃的")                               删除文件

      os.rename("吃的_副本","吃的")              重命名文件

    (3)line (一行一行的读取数据    但是每次读取出来的数据都会有  空行  所以需要使用strip()方法来去掉 或者空格)   lines (将每一行形成一个元素,放到一个列表中,将所有的内容读取出来)

    例如:

      f = open("文件夹",mode = "r",encoding = "utf - 8")

      for line in f:              每次读取一行

        print(line)

    (4)readable()     writeable()

    例如:

      f = open("文件夹"mode = "r",encoding = "utf - 8")

      如何判断这个文件可以进行什么操作

      print(f.readable())                    判断文件是否可读

      print(f.writeable())                    判断文件是否可写

    (5)lines

    例如:

      l = f.readlines() 

      print(l)

      f.flush()                                 打印出来的是列表    表示的是制表符  或者是换行

      f.close()

    去掉换行,或者制表符

      for s in l:                                                         for s in l:

        ss = s.strip()                                                   print(s.end = "")

        print(ss)

    strip的两个功能:①去掉空格   ②去掉换行符,制表符

    (6)  truncate()     不给参数,从文件头截取到当前位置   

    如果给了参数,从头截取到你给的这个参数的位置   (给的数是字节)

  • 相关阅读:
    凌乱的DSP笔记(6)-直流电机&步进电机
    凌乱的DSP笔记(5)-按键
    凌乱的DSP笔记(4)-继电器
    凌乱的DSP笔记(3)-蜂鸣器播放音乐
    凌乱的DSP笔记(2)-LED流水灯
    凌乱的DSP笔记(1)-F28335基础知识
    Python GUI设计——tkinter菜鸟编程(上)
    Python基础知识
    R|Shiny练习
    R之ggvis学习笔记
  • 原文地址:https://www.cnblogs.com/lhy979/p/9295526.html
Copyright © 2011-2022 走看看