Python 的输入输出(二):文件基础操作

Python自带的文件读取与输出,来自 Cescfangs 的个人博客。

宇宙通用的open()

与其他很多语言一样,Python操作文件的函数也是open():

>>> f=open('man.txt','w')
>>> f
<_io.TextIOWrapper name='man.txt' mode='w' encoding='cp936'>

第一个参数是文件,默认的是当前路径,我们也可以自己绝对路径,第二个参数决定了文件的操作方式,这里是写入,以下是常用的文件操作模式:

模式 说明 备注
'w' 写入 只能向文件里写入数据,如果存在同名文件将会清除原来数据
'r' 只读 只能读取文件里的内容,无法进行编辑
'r+' 读写 可以进行文件的读、写操作
'a' 添加 内容添加到文件末尾

默认情况下,文件的读取和输出都是以文本格式进行的(默认UTF-8编码),'b'会以二进制的形式对文件进行操作,'byte'是基本单位,一般来说二进制的文件会用在不包含文字的情况。
在文本模式下,读取文件时,Python会把不同平台的换行符号(Unix: '\n', Windows: '\r\n')统一转换成'\n',在写入文件时,执行相反的过程,这种模式对于文本文件的操作是没有问题的,但是有一些二进制的数据却会因此损坏,比如'exe'和'jpeg'文件,在对这些文件进行操作时一定要非常小心。

文件操作的相关函数

假设我们的‘man.txt’文件已经有一些信息。

f.read(size)

使用f.read(size)来读取文件的信息,这个函数会返回一个字符串或者bytes object(不知道咋翻译合适),size是可选的,缺省时将返回所有的信息,前提是文件数据得小于你的机器一次所能读取的最大容量。到达文件末尾时,会返回一个空字符串' ':

>>> f = open('man.txt')
>>> f.read()
'hello world\nmy name is Cesc Fangs\nI like Arsenal!!'
>>> f.read()
''

完成文件操作后,记得用f.close()关闭文件。

f.readline()

除了用read()一次性读取文件内容外,还可以用readline()来逐行读取文件内容:

>>> f = open('man.txt')
>>> f.readline()
'hello world\n'
>>> f.readline()
'my name is Cesc Fangs\n'
>>> f.readline()
'I like Arsenal!!'
>>> f.readline()
'' 

如果不是以新行结尾的,那么最后一行的不会返回'\n'会被忽略,但是以空行结尾的,最后会返回'\n'。
需要逐行读取文件内容时,我们一般都配合循环来干:

>>> for line in f:
        print(line, end='')

hello world
my name is Cesc Fangs
I like Arsenal!!

list(f)还可以直接直接把文件内容存到列表中来读取:

>>> f.close()
>>> f=open('man.txt')
>>> list(f)
['hello world\n', 'my name is Cesc Fangs\n', 'I like Arsenal!!']

f.write()

f.write()可以把字符串写入到文件中,同时返回字符串的长度,如果要写入其他数据,需要先转化成字符串:

>>> f = open('man.txt', 'a')
>>> f.write('I am a ZJUer \n')
14
>>> Ars = ['Ramsy', 16]
>>> s = str(Ars)
>>> f.write(s)
13
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C/C++输入输出流总结 前两天写C++实习作业,突然发现I/O是那么的陌生,打了好长时间的文件都没有打开,今天终...
    LuckTime阅读 1,759评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,826评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,234评论 19 139
  • 懒得转成字体图标形式了。于是: 图片大小46X46
    一只飞阅读 545评论 0 0
  • 寒假渐去渐远,远得不见了一丝踪影,空留长长的叹息在风中,空留一堆假期综合症在我的身上。 1.胖 人常说每逢佳节胖三...
    清浅光阴阅读 466评论 0 0