社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python中的文件读写

生信修炼手册 • 5 年前 • 705 次点击  

欢迎关注”生信修炼手册”!

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

读取数据通常有两种模式

  1. 第一种,读取用户的键盘输入,使用场景,让用户输入yes或者no来控制程序的走向

  2. 第二种,读取文件中的内容, 也是使用最广泛的场景

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


>>> a = input()hello>>> a'hello'

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

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

>>> f = open('result.txt')>>> f'result.txt', mode 'r' at 0x7fbf5adaa540>

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

  1. r, 只读模式

  2. w,写入模式, 原有的内容会被忽略

  3. a,追加模式,在原有的内容上追加

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

>>> next(f)'ACTB\n'>>> next(f)'GAPDH\n'>>> next(f)'PGK1\n'>>> next(f)'PPIA\n'

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

>>> for line in f:...     print(line)...

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

# 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']

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

>>> f = open('result.txt')>>> f.readlines()['A\n', 'B\n', 'C\n', 'D\n', 'E\n', 'F\n']>>> f.close()

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

>>> f = open('result.txt',  'w')>>


    
> f.write('hello\n')>>> f.close()

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

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

# 循环读取文件# 每次读取一行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·

—如果喜欢,快分享给你的朋友们吧—



原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!
本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。
  更多精彩



  写在最后


转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。


扫描下方二维码,关注我们,解锁更多精彩内容!


一个只分享干货的

生信公众号





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62747