Py学习  »  Python

Python第7天 文件读写

爬虫俱乐部 • 5 年前 • 735 次点击  


爬虫俱乐部之前推出的线下培训,得到了各位老师的一致好评。为了更加方便大家学习,满足更多Stata用户的学习需求,爬虫俱乐部已隆重推出在线直播课程,请大家奔走相告!课程报名链接:https://ke.qq.com/course/286526#tuin=9735fd2d,详情见推文《爬虫俱乐部隆重推出网上直播课程第一季

有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

喜大普奔~爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~

好消息:爬虫俱乐部即将推出研究助理供需平台,如果您需要招聘研究助理(Research Assistant or Research Associate),可以将您的需求通过我们的公众号发布;如果您想成为一个RA,可以将您的简历发给我们,进入我们的研究助理数据库。帮我们写优质的推文可以提升您被知名教授雇用的胜算呀!

节后愉快!转眼间,爬虫俱乐部推出Python这个新的学习板块已经近两个月,相信大家一直跟着我们的步伐进行相关学习,并从中有所收获。咳咳咳~进入正题^_^今天给大家带来的内容是关于文件读写,即文件的读入与输出,是关于如何从文本文件中读入数据和写入数据。这里涉及到Python内置的几个常用的基础函数,接下来小编为大家一一介绍:

一、创建文件对象——open()函数

open()函数可以用来打开或创建指定路径下的文件,基本语法如下:

file = open(filename, mode)

ž file是open()函数返回的文件对象

ž filename是调用文件的名称(含路径)

ž mode由两个字母组成,第一个字母指明文件的操作模式:r表示只读模式(只可读入文件,不可修改文本内容,默认为r,可省略);w表示写入模式(如果文件不存在则新创建,如果存在则追加覆盖文本内容);x表示在文件不存在的情况下创建并写入文本内容;a表示如果文件存在,则在文件末尾追加文本内容。mode的第二个字母指明文件的类型:t代表文本类型(默认为t,可省略);b代表二进制文件

举个例子~使用open函数打开已创建的文本文件temp.txt,并返回到对象file中:

ps. 在输入文档路径时应使用正斜线/,而不是直接从windows路径复制下来的反斜线\,否则会报错。如果使用反斜线,则应使用两个反斜线”\\”,(如open(‘E:\\财大\\爬虫俱乐部\\temp.txt’))。

pps.关于open()函数的操作模式(w,r,a),如a(追加模式)其实在文档不存在时,可以自动创建该文档,而r(读入模式)不具备,同时还有w+,r+等扩展模式均有不同的含义和适用条件,限于篇幅小编就不一一为大家详细介绍啦,有兴趣的童鞋可以继续深入了解哦~

二、文件读入——read(), readline()和readlines()方法

执行上述命令之后,大家可能会奇怪:咦?为什么看不到文本文档的内容?文档真的打开了吗??这是因为,我们在创建对象之后,需要读入文本文件才可以看到文档的内容。接下来为大家介绍Python中的几种文件读入方法。

1、 read()方法

read()方法会读取并显示文档的全部内容(包括换行符\n):

当我们撰写一个程序时,总会考虑到计算机是否有足够的内存来确保程序能正常运行。由于本文所使用的文档用于演示,因此文件很小,不存在内存是否充足的问题。然而,当文件过大时,一次性调用整个文件有可能导致内存不足,此时可以用read()方法的size选项指定从文件读取对的最大字节数,如果未指定size则默认读取整个文件。

2、readline() 方法

       readline()方法以行为单位读入包括换行符在内的文档,每次读取一行。与read()方法一样,readline()方法也可以使用size选项。

3、readlines() 方法

       readlines()方法能够返回一个特殊对象,通过对该对象的每一行进行for循环,可以获得整个文档的完整内容。该方法的一个显著优点是,当文档非常大时,readlines()方法可以以几乎不占用计算机内存的条件而迅速读入所有内容。

三、文件写入——write() 方法

       write() 方法用于向文件写入指定的字符串内容。write()方法可以返回输入字符串的字符数。

需要注意的是,在open()函数中,如果mode指定的模式是w,则文档原内容会被覆盖,只保留此次新写入的内容。而如果我们希望在原文件的基础上追加文本内容,则在open()函数中指定mode的模式是a即可。

当我们再次打开temp.txt文档时,发现我们新增加的内容已经增加在文档末尾处了。

四、位移操作——seek() 方法

       seek()方法可以跳转到文档的任意位置,并返回当前距文档开头的字节偏移量。默认的位置是文档开头,即seek(0)。当我们对file对象设定字节偏移量为20时,使用print()函数输出用read()方法读入的内容,我们发现输出的内容没有了从开头开始的10个字节——“爬虫俱乐部新版块——”。

ps.tell()方法也可以返回当前的字节偏移量,但是没有位移的功能。

五、关闭文件——close() 方法

       当我们结束读写操作后,使用 close()方法关闭文件是一个良好的习惯,因为一个文件只有在被关闭时,Python中要求被输入的内容才能真实被显现出来。另外,为了避免大家在书写完内容后,忘记f.close(),我们也可以采取更安全,也更结构化的写法:

with open() as f:

some code

这里的some code需要比之with 语句多一个缩进,with语句将句柄对象返回给了f ,从语义上我们也很容易理解这个关系: with something as a,a与something是等价关系。

关于文件读写的基本操作这次就介绍到这里啦,笔芯~


注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同,纯属巧合!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~


                                   

             文字编辑:赵宇亮

  技术总编:刘贝贝

往期推文推荐:

1.爬虫俱乐部新版块--和我们一起学习Python

2.hello,MySQL--Stata连接MySQL数据库

3.hello,MySQL--odbcload读取MySQL数据

4.再爬俱乐部网站,推文目录大放送!

5.用Stata生成二维码—我的心思你来扫

6.Hello,MySQL-odbc exec查询与更新

7.Python第一天

8.Python第二天

9.事件研究大放送

10.爬虫俱乐部隆重推出网上直播课程第一季




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/T1LCsdzPsX
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/11298
 
735 次点击