前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python中的文件读写

python中的文件读写

作者头像
生信修炼手册
发布2020-05-11 14:07:10
1.1K0
发布2020-05-11 14:07:10
举报
文章被收录于专栏:生信修炼手册生信修炼手册

读写文件是日常开发中最高频的操作,从文件中读取你需要处理的数据,根据处理逻辑编写代码,将处理好之后的结果保存到结果文件中。

读取数据通常有两种模式

  1. 第一种,读取用户的键盘输入,使用场景,让用户输入yes或者no来控制程序的走向
  2. 第二种,读取文件中的内容, 也是使用最广泛的场景

通过input函数来读取键盘输入,用法如下

代码语言:javascript
复制
>>> a = input()
hello
>>> a
'hello'

执行到input函数时,程序会先暂停,当用户输入内容,并按回车确认之后,自动将键盘输入的内容进行保存和记录。

文件内容的读取, 首先需要通过内置函数open打开文件,用法如下

代码语言:javascript
复制
>>> f = open('result.txt')
>>> f
<open file 'result.txt', mode 'r' at 0x7fbf5adaa540>

返回值我们称之为文件句柄,可以看到在返回值中显示了mode值,这个值对应的是文件的打开模式,常用的有以下3种

  1. r, 只读模式
  2. w,写入模式, 原有的内容会被忽略
  3. a,追加模式,在原有的内容上追加

文件句柄本质是一个生成器,可以通过next函数依次打印每一行的内容

代码语言:javascript
复制
>>> next(f)
'ACTB\n'
>>> next(f)
'GAPDH\n'
>>> next(f)
'PGK1\n'
>>> next(f)
'PPIA\n'

当然也可以循环打印,写法如下

代码语言:javascript
复制
>>> for line in f:
...     print(line)
...

在python中,还提供了一系列的read方法来读取文件,用法如下

代码语言:javascript
复制
# read方法一次读取所有行
# 返回值为一个字符串
>>> f = open('result.txt')
>>> f.read()
'A\nB\nC\nD\nE\nF\n'
>>>
>>>
# readline方法依次返回文件的每一行
>>> f = open('result.txt')
>>> f.readline()
'A\n'
>>> f.readline()
'B\n'
>>>
>>>
# readlines方法一次读取所有行
# 返回值为列表
>>> f = open('result.txt')
>>> f.readlines()
['A\n', 'B\n', 'C\n', 'D\n', 'E\n', 'F\n']

对于文件句柄而言,打开之后,必须关闭,写法如下

代码语言:javascript
复制
>>> f = open('result.txt')
>>> f.readlines()
['A\n', 'B\n', 'C\n', 'D\n', 'E\n', 'F\n']
>>> f.close()

文件的写入是类似的,将文件的打开模式替换为w, 并调用write方法

代码语言:javascript
复制
>>> f = open('result.txt',  'w')
>>> f.write('hello\n')
>>> f.close()

write方法一次写入一个字符串,如果要写入多行,可以多次调用write方法,注意在字符串末尾添加换行符来正确显示。

为了更加安全方便的进行文件读写,python提供了with语句,写法如下

代码语言:javascript
复制
# 循环读取文件
# 每次读取一行
with open('result.txt') as f:
    for line in f:
        print(line)


# 写入文件
# 遍历需要输出的内容列表
# 每次输出一行
with open('result.txt', 'w') as f:
    for line in list:
        f.write(line)

with语句会自动执行关闭句柄的操作,这样简化了代码,不要每次都去写关闭句柄的操作。

·end·

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档