对文本操作的流程:

  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. 自动化测试基础篇--Selenium Xpath定位

    摘自https://www.cnblogs.com/sanzangTst/p/7458056.html 学习 什么是xpath? XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言 ...

  2. 快速启动神器 Wox

    wox(快速启动程序) wox官网:http://www.wox.one/ 下载wox:https://github.com/Wox-launcher/Wox/releases wox插件库:http ...

  3. 安装Jenkins getting started卡住

    前言 jenkins版本:2.32.3 操作系统:windows 卡住信息 如果在安装jenkins时卡在getting startted的界面,如下所示 解决方法 1.打开 运行  输入 servi ...

  4. Ubuntu下永久修改主机名和创建用户

    使用hostname 进行修改. 创建用户,修改密码

  5. php curl参数详解之post方法

    利用记录的URL参数解释,写一个post方法: <?php function do_post($url, $data) { $ch = curl_init(); //设置CURLOPT_RETU ...

  6. LeetCode算法题-Path Sum III(Java实现)

    这是悦乐书的第227次更新 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第94题(顺位题号是437).您将获得一个二叉树,其中每个节点都包含一个整数值.找到与给定值相加的路径数 ...

  7. February 26th, 2018 Week 9th Monday

    A good beginning is half done. 良好的开端是成功的一半. We can't finish anything if we don't start, sometimes ge ...

  8. MATLAB中冒号的用法

    MATLAB中冒号的用法 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ matlab中冒号代表步长,用实例来说明 >> A=[1 2 3 ...

  9. 设计模式のBridgePattern(桥接模式)----结构模式

    一.产生背景 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体 ...

  10. 在Linux上搭建VisualSVN Server(svn服务端)

    一.检查是否安装了低版本的SVN #  rpm -qa | grep subversion 如果已安装SVN,则会返回版本信息.这时需要卸载旧版本的SVN. 卸载旧版本SVN # yum remove ...