目录

编码

with方法

文件函数

文件操作

内置方法seek,tell


编码

ascll码表,gbk编码,unicode编码,utf-8编码,

文件操作模式 

模式 意义 注意事项
r 只读模式打开文件,读文件内容的指针会放在文件的开头。 操作的文件必须存在。
rb 以二进制格式、采用只读模式打开文件,读文件内容的指针位于文件的开头,一般用于非文本文件,如图片文件、音频文件等。
r+ 打开文件后,既可以从头读取文件内容,也可以从开头向文件中写入新的内容,写入的新内容会覆盖文件中等长度的原有内容。
rb+ 以二进制格式、采用读写模式打开文件,读写文件的指针会放在文件的开头,通常针对非文本文件(如音频文件)。
w 以只写模式打开文件,若该文件存在,打开时会清空文件中原有的内容。 若文件存在,会清空其原有内容(覆盖文件);反之,则创建新文件。
wb 以二进制格式、只写模式打开文件,一般用于非文本文件(如音频文件)
w+ 打开文件后,会对原有内容进行清空,并对该文件有读写权限
wb+ 以二进制格式、读写模式打开文件,一般用于非文本文件
a 以追加模式打开一个文件,对文件只有写入权限,如果文件已经存在,文件指针将放在文件的末尾(即新写入内容会位于已有内容之后);反之,则会创建新文件。
ab 以二进制格式打开文件,并采用追加模式,对文件只有写权限。如果该文件已存在,文件指针位于文件末尾(新写入文件会位于已有内容之后);反之,则创建新文件。
a+ 以读写模式打开文件;如果文件存在,文件指针放在文件的末尾(新写入文件会位于已有内容之后);反之,则创建新文件。
ab+ 以二进制模式打开文件,并采用追加模式,对文件具有读写权限,如果文件存在,则文件指针位于文件的末尾(新写入文件会位于已有内容之后);反之,则创建新文件。

with方法

with语法 可以自动完成 close操作(较简便)

(1)with open( " E:\python35\day9\集合123.png",mode=" w", encoding="utf-8") as f :

f . write( data)    ##写入数据变量传值

(2)with open( " E:\python35\day9\集合123.png" ,mode=" r ", encoding="utf-8")  as f :

data_new = f.read  ##定义传值变量 可设为字符串

读取文件后生成文件类型对象f   并res = f.read 生成赋值变量

文件函数

2.判断可读可写
fp = open("lianxi2.txt",mode="r+",encoding="utf-8")
#readable()        功能: 判断文件对象是否可读
res = fp.readable()
print(res)
#writable()        功能: 判断文件对象是否可写
res = fp.writable()
print(res)
#for循环:文件对象fp是可迭代对象,可循环;(按照一行一行读取数据)
for i in fp:
   print(i)

 3.文件相关的函数
#readline()     功能: 读取一行文件内容 , 基于上一行往下读取,许多次调用,
with open("lianxi2.txt",mode="r+",encoding="utf-8") as fp:
   print(fp.readline())
   print(fp.readline())
   print(fp.readline())
   print(fp.readline())

        #读取所有内容
with open("lianxi2.txt",mode="r+",encoding="utf-8") as fp:
   res = fp.readline()    # 先读取一行
   while res:   #循环读取全部内容
      print(res)
      res = fp.readline()  # 再读取一行

# 如果当前这一行为空 "" while res => while False
   # 如果当前这一行不为空  while res => while True

        #读取固定长度的内容
   # res = fp.readline(5)
   res = fp.readline(5000)
   print(res)

print("<=================>")
#readlines()    功能:将文件中的内容按照换行符为间隔读取到列表当中[必会]
with open("lianxi2.txt",mode="r+",encoding="utf-8") as fp:
   # ['鹅鹅鹅\n', '曲项向天歌\n', '白毛浮绿水\n', '红掌拨清波']
   lst = fp.readlines()
   for i in lst:
      print(i.strip())
   # print(lst)

#writelines()   功能:将内容是字符串的可迭代性数据写入文件中 参数:内容为字符串类型的可迭代数据 [必会]
lst = ['鹅鹅鹅\n', '曲项向天歌\n', '白毛浮绿水\n', '红掌拨清波']
# 修改内容
lst[1] = "曲项向地歌\n"
# 插入新内容
lst.insert(2,"王文太帅了\n")
# print(lst)

#truncate()     功能: 把要截取的字符串提取出来,清空重写 (字节)
with open("lianxi2.txt",mode="r+",encoding="utf-8") as fp:
   fp.truncate(9)

总结:
truncate  单位 字节
seek      单位 字节
read      单位 字符个数(如果是字符串,读的是字符个数,如果是字节流,读的是字节个数)
readline  单位 字符个数

文件操作

打开文件

file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]

在 Python中,如果想要操作文件,首先需要创建或者打开指定的文件,并创建一个文件对象,而这些工作可以通过内置的 open() 函数实现。open() 函数用于创建或打开指定文件,该函数的常用语法格式如下:

'''
- file:表示要创建的文件对象。
- file_name:要创建或打开文件的文件名称,该名称要用引号(单引号或双引号都可以)括起来。需要注意的是,如果要打开的文件和当前执行的代码文件位于同一目录,则直接写文件名即可;否则,此参数需要指定打开文件所在的完整路径。
- mode:可选参数,用于指定文件的打开模式。可选的打开模式如表 1 所示。如果不写,则默认以只读(r)模式打开文件。
- buffering:可选参数,用于指定对文件做读写操作时,是否使用缓冲区。
- encoding:手动设定打开文件时所使用的编码格式,不同平台的 ecoding 参数值也不同,以 Windows 为例,其默认为 cp936(实际上就是 GBK 编码)。
'''

关闭文件

注意,当操作文件结束后,必须调用 close() 函数手动将打开的文件进行关闭,这样可以避免程序发生不必要的错误。定义:

fp.close() ##写在末尾,默认格式

读文件

Python提供了如下 3 种函数,它们都可以帮我们实现读取文件中数据的操作:

read() 函数:逐个字节或者字符读取文件中的内容;

readline() 函数:逐行读取文件中的内容;

readlines() 函数:一次性读取文件中多行内容

# (1) 读字符
f = open("满江红",encoding="utf8")

print(f.read()) # 默认读取所有字符
print(f.read(3))
print(f.readline())
print(f.readlines())

# (2) 读字节
f = open("满江红",mode="rb")
print(f.read())
print(f.read(2))
print(f.read(3))
print(f.read(2).decode())
print(f.read(12).decode())

# (3) 循环读文件
f = open("满江红",encoding="utf8")
for line in f.readlines():
    print(line,end="")

for line in f:
    print(line,end="")

 写文件

f = open("满江红new",mode="w",encoding="utf8") #  w:覆盖模式  a:  追加模式
f.write("怒发冲冠,凭栏处、潇潇雨歇。\n")
f.writelines(["抬望眼,","仰天长啸,壮怀激烈"]) # 将字符串列表写入文件中
f.flush()
import time
time.sleep(100)
f.close() # 没有close,只有在程序退出时才会被释放掉

内置方法seek,tell

借助seek()函数则可以移动文件指针的位置,而tell() 函数则是获取光标当前位置。

seek() 函数用于将文件指针移动至指定位置,该函数的语法格式如下:

file.seek(offset[, whence])    #提取部分文件内容

whence:作为可选参数,用于指定文件指针要放置的位置,

该参数的参数值有 3 个选择:0 代表文件头(默认值)、1 代表当前位置、2 代表文件尾。

offset:表示相对于 whence 位置文件指针的偏移量,正数表示向后偏移,负数表示向前偏移。

例如,whence == 0 &&offset == 3(即 seek(3,0) ),表示文件指针移动至距离文件开头处 3 个字符的位置

六,文件操作(编码,读写文件,with方法)相关推荐

  1. C文件操作、读写文件 C++文件读写、文件操作

    转自  飘羽随风 基于C的文件操作  在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之. 一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FI ...

  2. python open追加模式_Python文件操作,open读写文件,追加文本内容实例

    1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt ...

  3. [Python从零到壹] 三.语法基础之文件操作、CSV文件读写及面向对象

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 追加键值对数据 | 更新键值对数据 )

    文章目录 一.追加键值对数据 二.更新键值对数据 三.完整代码示例 一.追加键值对数据 在上一篇博客 [C 语言]文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取 ...

  5. 转换流指定编码读写文件

    import java.io.*;/*** 转换流指定编码读写文件*/ public class Demo1 {public static void main(String[] args) throw ...

  6. python打开文件写文件乱码_Python读写文件乱码问题

    对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...

  7. Java编程那些事儿——文件操作之写文件

    Java编程那些事儿--文件操作之写文件 Java, Java培训, Java基础, Java学习, Java教程 11.3.1.4 写文件 如前所述,将程序内部的数据输出到程序外部的数据源,应该使用 ...

  8. 64位内核开发第8讲,文件操作.以及删除文件.

    目录 文件操作,以及强删文件. 一丶文件操作 1.文件操作的几种方式 1.2 文件的表示 二丶文件操作的常见内核API 三丶内核中三种定义结构体的方式 四丶驱动创建文件的完整代码示例 4.1.4内核中 ...

  9. 【Python】文件操作(单文件操作)

    目录 一.文件操作概述: 二.文件基本操作: 文件操作步骤: 1.打开文件: 2.对文件进行读写操作: 3.关闭文件的输入输出流: demo: 文件访问模式: 基础访问模式特点: 读取操作: 1.re ...

  10. 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)

    读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...

最新文章

  1. 洛谷 P3157 [CQOI2011]动态逆序对 | CDQ分治
  2. .NET分层登陆——机房收费系统再总结
  3. 这位RD同学,你好像对JD有点误解!
  4. 中考计算机考试作文,中考理化实验计算机考试作文
  5. 在Scrollview中使用AutoLayout
  6. 人在斯坦福,刚上CS224n
  7. oracle Plsql 执行update或者delete时卡死问题解决办法
  8. win11间歇性卡顿怎么办 windows11间歇性卡顿的解决方法
  9. zip4j实现文件压缩与解压缩 common-compress压缩与解压缩
  10. 使用网易云api、Vue 和swiper实现轮播图 (音乐app项目-第2步)
  11. Kotlin | Kotlin教程
  12. 乞讨式的助人为乐不该提倡,换下铺被拒的律师是自作自受
  13. 6 观察者模式off方法
  14. 额,我要说一件重要的事+用C++编写一个走迷宫小游戏(1.1版)
  15. 【网页制作】CSS文本和字体属性讲解【附讲解视频】
  16. variable ‘XXX cannot be implicitly captured in a lambda with no capture-default specified
  17. TinyBERT论文及代码详细解读
  18. ARP是如何工作的?
  19. Android官方实现的层次状态机Hierarchical State Machine源代码
  20. 国密局公开SM2和SM3算法或预示中国商密算法将走向开放

热门文章

  1. 6.4 置换基本概念
  2. mysql relay log 修改_MySQL relaylog + SQL_Thread 增量恢复binlog
  3. 安全知识、工具网址集锦(持续更新)
  4. 超详细Gulp打包seajs模块压缩合并,绝对对你项目有帮助 ~
  5. CCF中学生计算机程序设计入门篇练习2.4.2(NOI 1002 三角形) pascal
  6. 织梦CMS插件合集覆盖几十插件功能采集推送等
  7. iphone java模拟器_【Mac + Appium + Java1.8学习(三)】之IOS自动化环境安装配置以及简单测试用例编写(模拟器、真机)...
  8. AutoCAD2013安装说明
  9. word打不开html,word打不开怎么办?word文档打不开怎么办?
  10. 国内it软件外包公司排行榜是怎么样的