对文本操作的流程:

  1. 打开文件,得到文件句柄并赋值给一个变量

  2. 通过句柄对文件进行操作

  3. 关闭文件

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

name : 一个包含了你要访问的文件名称的字符串值。

mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

encoding:对文件规定打开的编码

newline = “”:读取文件真正的换行符,在window里面为“\r\n”,Linux和Python里面为“\n”

模式

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

file对象

序号 方法及描述
1 file.close()
关闭文件。关闭后文件不能再进行读写操作。
2 file.flush()
刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
3 file.fileno()
返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
4 file.isatty()
如果文件连接到一个终端设备返回 True,否则返回 False。
5 file.next()
返回文件下一行。
6 file.read([size])
从文件读取指定的字节数,如果未给定或为负则读取所有。
7 file.readline([size])
读取整行,包括 "\n" 字符。
8 file.readlines([sizehint])
读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
9 file.seek(offset[, whence])
设置文件当前位置
10 file.tell()
返回文件当前位置。
11 file.truncate([size])
截取文件,截取的字节通过size指定,默认为当前文件位置。
12 file.write(str)
将字符串写入文件,返回的是写入的字符长度。
13 file.writelines(sequence)
向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

具体使用

###############只读模式的使用###############

>>> f = open("C:/Users/DELL/Desktop/test.txt","r",encoding="GBK")
>>> date = f.read() ## 读出所有的文字
>>> print(date)
>>>date.close() ##每次都要close()储存
Hello,World! >>>file_name = "C:/Users/DELL/Desktop/test.txt"
>>>f = open(file_name, "r", encoding = "GBK")
>>>print("First", f.readline()) ## 一列一列的显示文字
>>>print("Second", f.readline())
>>>print("Third", f.readline())
>>>print("Forth", f.readline())
First Hello,World! Second I love you! Third You are so beautiful! Forth HaaaaHaaa! >>>file_name = "C:/Users/DELL/Desktop/test.txt"
>>>f = open(file_name, "r", encoding = "GBK")
>>>print(f.readlines()) ## 把内容显示成列表
['Hello,World!\n', 'I love you!\n', 'You are so beautiful!\n', 'HaaaaHaaa!\n', 'Are you ok?\n'] ###############只读模式和追加模式的使用###############
>>>f = open("test.txt", "w", encoding = "UTF-8") // f = open("test.txt", "a", encoding = "UTF-8")
"""在字符处理里面,w模式会再新建一个文件(会替代原来的文件)来写入内容,而a模式会添加内容,如果没有该文件就新建一个"""
>>>print(f.readable())
False ## 在只写模式下打开的文件不能读
>>>print(f.writable())
True
>>>f.write("I love you!")
11 ## 显示其字节数
>>>f.flush() ## 把内存里面的内容加载到磁盘里面
>>>f.writelines(["I love you!\n","You are so good!\n","Thank you very much!\n"]) ## 用列表写入文字
>>>f.close() >>>f = open(file_name, "r+", encoding = "GBK") ##为读写模式,即可以写入也可以阅读 >>>f=open('test.txt','rb') ## 以二进制的方式打开,不能指定编码
>>>date = f.read()
>>>print(date)
b'\xce\xd2\xcf\xb2\xbb\xb6\xc4\xe3\r\n'
>>>print(date.decode("gbk"))
我喜欢你 >>>f=open('test.txt','wb') // >>>f=open('test.txt','ab') ##在这样模式下,写入内容必须先把内容编译成指定二进制
>>>f.write(bytes("我爱你",encoding = "gbk")) ## 用bytes方法
6
>>>f.flush()
我爱你 >>>f.write("我爱你".encode("gbk")) ##encode方法
6
>>>f.close()
我爱你我爱你 ###################################################################################
>>>f.closed #文件如果关闭则返回True
>>>print(f.closed)
True >>>f.tell() #查看文件处理当前的光标位置
0
#################
fileObject.seek(offset[, whence])
"""可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起(必须使用b模式打开),2代表从文件末尾算起"""
>>>f.seek(3) #从开头开始算,将光标移动到第三个字节
3
>>>print(f.tell())
3
>>>f.seek(3,1)
6
>>>f.seek(3,2)
24
>>>f.seek(-2,2)
19 >>>f.truncate(5) #从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写方式打开,但是w和w+除外
5
>>>print(f.read())
I lov

with open方法

with open( ) as variable

这种方式打开的文件将不用使用close()或者flush(),刷入内容

with open("test.txt", "r+") as f:
print(f.read())

Python文本处理的更多相关文章

  1. 算是休息了这么长时间吧!准备学习下python文本处理了,哪位大大有好书推荐的说下!

    算是休息了这么长时间吧!准备学习下python文本处理了,哪位大大有好书推荐的说下!

  2. Python 文本解析器

    Python 文本解析器 一.课程介绍 本课程讲解一个使用 Python 来解析纯文本生成一个 HTML 页面的小程序. 二.相关技术 Python:一种面向对象.解释型计算机程序设计语言,用它可以做 ...

  3. python 文本分类

    python 文本分类 pyhton 机器学习 待续...

  4. python文本 maketrans和translate

    python文本 maketrans和translate 场景: 过滤字符串的某些字符,我们从例子出发 >>> tb=str.maketrans ('abc','123')    & ...

  5. python文本 字符串逐字符反转以及逐单词反转

    python文本 字符串逐字符反转以及逐单词反转 场景: 字符串逐字符反转以及逐单词反转 首先来看字符串逐字符反转,由于python提供了非常有用的切片,所以只需要一句就可以搞定了 >>& ...

  6. python文本 拼接或合并字符串

    python文本 拼接.合并字符串 场景: 拼接.合并字符串 在这个场景中,我们首先想到的当然是使用+或者+=将两个字符串连接起来 >>> a='a'    >>> ...

  7. python文本 去掉字符串前后空格

    python文本 去掉字符串前后空格 场景: 去掉字符串前后空格 可以使用strip,lstrip,rstrip方法 >>> a="abc".center (30 ...

  8. python文本 判断对象里面是否是类字符串

    python文本 判断对象里面是否是类字符串 场景: 判断对象里面是否是类字符串 一般立刻会想到使用type()来实现 >>> def isExactlyAString(obj):  ...

  9. python文本 单独处理每个字符的方法汇总

    python文本 单独处理字符串每个字符的方法汇总 场景: 用每次处理一个字符的方式处理字符串 方法: 1.使用list(str) >>> a='abcdefg'    >&g ...

  10. python文本 字符串开头或者结尾匹配

    python文本 字符串开头或者结尾匹配 场景: 字符串开头或者结尾匹配,一般是使用在匹配文件类型或者url 一般使用startwith或者endwith >>> a='http:/ ...

随机推荐

  1. 在Lua中提示UnityEngine.dll的方法

    我的环境 安装最新的 EmmyLua-1.2.1及以上版本 IDEA 2017.1.2 及以上版本 关于EmmlyLua的介绍可查看我之前的文章:Lua代码提示和方法跳转 说明:本文方法摘自 Emmy ...

  2. ini (ini-parser)配置文件解析 for donet

    介绍 此ini解析库适用于mono(unity3d),donet,大小在30kb左右. 开源免费:https://github.com/rickyah/ini-parser 使用示例 engine_c ...

  3. php获取ip地址所在的地理位置的实现

    1,通过腾讯或者新浪提供的接口来获取(新浪和腾讯类似) <?php     function getIPLocation($queryIP){      $url = 'http://ip.qq ...

  4. memcache缓存雪崩、缓存无底洞、缓存穿透、永久数据被踢现象

    一.缓存雪崩现象 缓存雪崩一般是由某个缓存节点失效,导致其他节点的缓存命中率下降, 缓存中缺失的数据去数据库查询,短时间内造成数据库服务器崩溃, 重启DB短期又被压跨,但新数据的缓存也更新一些,DB反 ...

  5. LeetCode算法题-Valid Anagram(Java实现)

    这是悦乐书的第198次更新,第205篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第61题(顺位题号是242).给定两个字符串s和t,写一个函数来确定t是否是s的anag ...

  6. Spring的AOP开发入门,Spring整合Junit单元测试(基于ASpectJ的XML方式)

    参考自 https://www.cnblogs.com/ltfxy/p/9882430.html 创建web项目,引入jar包 除了基本的6个Spring开发的jar包外,还要引入aop开发相关的四个 ...

  7. influxdb问题解决

    一.influxdb启动不了? 清空数据文件夹: cd /var/lib/influxdb/data rm -rf * 清除完就可以启动了,然后查看/var/lib/influxdb下data和met ...

  8. [小米 Online Judge]找出单独出现的数字

    描述: 给出N个数字.其中仅有一个数字出现过一次,其他数字均出现过两次,找出这个出现且只出现过一次的数字.要求时间和空间复杂度最小. 输入: 输入多个数字,每个数字以空格分开,回车结束 输出: 输出内 ...

  9. 【ES6】=>含义

    =>是es6语法中的arrow function (x) => x + 6 相当于 function(x){ return x + 6; }; var ids = this.sels.ma ...

  10. docker 15 dockerfile案例-CMD、ENTRYPOINT案例

    CMD.ENTRYPOINT都是指定一个容器启动时要运行的命令.但是CMD会覆盖前面的参数,而ENTRYP会追加组合原来的参数 未完待续...