博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20180711
阅读量:4507 次
发布时间:2019-06-08

本文共 2856 字,大约阅读时间需要 9 分钟。

一.文件操作

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 (一行一行的读取数据    但是每次读取出来的数据都会有\n  空行  所以需要使用strip()方法来去掉\n或者空格)   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()                                 打印出来的是列表   \n  表示的是制表符  或者是换行

  f.close()

去掉换行,或者制表符

  for s in l:                                                         for s in l:

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

    print(ss)

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

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

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

 

转载于:https://www.cnblogs.com/lhy979/p/9295526.html

你可能感兴趣的文章
python接口自动化测试二十五:执行所有用例,并生成HTML测试报告
查看>>
Docker 安装及问题处理
查看>>
正则表达式之 数据验证 与 文本替换
查看>>
linux 安装mysql数据库——yum安装法
查看>>
Visual Studio 2008 不能更改安装目录的原因
查看>>
关于求最大公约数
查看>>
为Linux配置常用源:epel和IUS
查看>>
天府地
查看>>
C#高级编程
查看>>
JS实现从照片中裁切自已的肖像
查看>>
使用 https://git.io 缩短 a GitHub.com URL.
查看>>
Python:yield关键字
查看>>
EasyRTSPClient:基于live555封装的支持重连的RTSP客户端RTSPClient
查看>>
MySQL巡检
查看>>
学习笔记之传说中的圣杯布局
查看>>
共享内存的设计
查看>>
2017-2018-1 20155203 20155204 实验二 固件程序设计
查看>>
数据可视化视频制作
查看>>
mysql 数据备份。pymysql模块
查看>>
FactoryMethod模式——设计模式学习
查看>>