学习python对文本文档的操作

简介:

目的:使用python中的open函数对文本文档进行读写,即用python怎么读写txt。


环境:Python 3.5.2   Python 2.7.12   Ubuntu 16


函数:

open(filename, 'value')


第一个参数filename:

这里filename是文件名称,不推荐在第一个参数上直接写'路径/文件',最好用变量代替,如果一定要直接写路径,请写在引号内open('c:\\windows\\log.txt'),在window中路径用\\分割。


第二个参数

说第二个参数前要明白一个概念,seek指针,即指出开始操作的位置。

r   可读,不可写,指针在首部,文件不存在时打开报错,不填则默认为'r',open(filename) 等同于 open(filename, 'r')。

r+  可读,可写,指针在首部,文件不存在时打开报错

w  不可读,可写,指针在首部,创建一个新的空白文件,已经存在则覆盖。

w+ 可读,可写,指针在首部,创建一个新的空白文件,已经存在则覆盖。

a   不可读,可写,指针在尾部,原有的内容后面追加文本,文件不存在创建新的空白文件。

a+ 可读,可写,指针在尾部,原有内容后面追加文本,文件不存在则创建新的空白文件。

b   附加参数,以二进制形式操作,不可单独使用。

U  附加参数,替换换行符为\n。

以上参数可以组合使用,如:rb, wb, rb+等。


需要注意的是:这里所有的写都是覆盖写,不是插入写,如r+默认会从首部开始覆盖写入,已经存在的内容会被覆盖,文件的读取和写入都会改变指针的位置。


指针

这个要重点说明,指针意思就是指出开始操作的位置,读写都会改变指针的位置,如w+写完再读返回空,因为写完后指针在尾部,读取是自动从指针处开始。


seek(int, [int])

设定指针偏移量,第一个参数是偏移的值(整数),正数向右,负数向左,第二个参数可选,默认是0,表示相对内容首部,为1则是相对当前位置,为2表示相对尾部。

seek(0)等同于seek(0, 0)意思是相对于内容首部偏移0。

这里注意:python 2.x 可直接用seek的第二个参数,python 3.x则必须以附加'b'参数打开才能用


tell()   获取当前指针的位置。


说明先设定上下文:

test.txt文件内容:

1
2
3
This  is  a test of Ricky.
The second line.
The third line.

python部分:

1
2
3
4
5
6
file  =  open (filename,  'r+' )
file .tell()  # 返回当前指针位置为0。
file .seek( 8 )   # 设定指针位置相对首部偏移8
file .readline()  # 返回字符串'a test of Rciky.',指针位置到了25,在第二行行首。
file .write( 'changed' # 从第二行写入字符串'changed',第二行变成'changedond line.'
ff.close()

可以发现,执行的是覆盖写入,且指针的位置会变化,所以w+先写后读返回空白。



下面演示文件的读写:

1
2
3
4
5
6
7
8
9
10
#以写操作打开文件filename,存在则覆盖,不存在则建立(说白了就是不管文件在不在,这里会有一个空白文件)
=  open (filename, 'w' )  
#执行写操作,写入内容是this is a test.
f.write( 'this is a test.' )  
#再次以读操作打开文件filename,这里没有加参数则默认添加了‘r’的操作
=  open (filename)  
#输出读取的内容
print  f.readline()  
#最后一定要关闭文件。
f.close()

文件的读操作有read() 、readline()和readlines():

read(): 一次性读取文本为字符串到内存中,不会逐行处理;

readline():每次读取一行文本为字符串到内存;

readlines():一次性读取文本为列表到内存,速度快于readline().

对于文件的大小和内存问题,根据自己的实际情况选择处理。


文件的写操作有write()和writelines():

write(str): 这个接受一个字符串对象

writelines(list): 这个接受一个可迭代对象,如一个列表,但当列表内嵌套列表则返回错误


这里推荐用with方法打开文件,即使发生错误,也会在结尾自动关闭文件。

1
2
3
with  open (filename,  'w' ) as file_text:
     file_text.write( 'this is second test!' )
     #这样这个块就不需要执行文件close()















本文转自RickyHuL51CTO博客,原文链接:http://blog.51cto.com/rickyh/1912875  ,如需转载请自行联系原作者
相关文章
|
18天前
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
133 82
|
10天前
|
存储 API 数据安全/隐私保护
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
50 6
|
10天前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
|
18天前
|
Python
python pandas学习(一)
该代码段展示了四个主要操作:1) 删除指定列名,如商品id;2) 使用正则表达式模糊匹配并删除列,例如匹配订单商品名称1的列;3) 将毫秒级时间戳转换为带有时区调整的日期时间格式,并增加8小时以适应本地时区;4) 将列表转换为DataFrame后保存为Excel文件,文件路径和名称根据变量拼接而成。
23 3
|
3月前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
3月前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
2月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
3月前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
3月前
|
Python
Python学习的自我理解和想法(7)
学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。
|
3月前
|
存储 安全 索引
Python学习的自我理解和想法(8)
这是我在B站千锋教育学习Python的第8天,主要内容是元组。元组是一种不可变的序列数据类型,用于存储一组有序的元素。本文介绍了元组的基本操作,包括创建、访问、合并、切片、遍历等,并总结了元组的主要特点,如不可变性、有序性和可作为字典的键。由于开学时间紧张,内容较为简略,望见谅。

热门文章

最新文章