首页 > 编程语言 >python中f.read()与f.readline区别

python中f.read()与f.readline区别

时间:2022-11-10 10:33:45浏览次数:41  
标签:csv python read file print readline txt line


众所周知在python中读取文件常用的三种方法:read(),readline(),readlines(),今天看项目是又忘记他们的区别了。以前看书的时候觉得这东西很简单,一眼扫过,待到用时却也只知道有这么几个方法,不懂得它的原理与用法。也许吧,没有永远的记忆,况且根本没有用心去记它。话不多说,来一起看看详细的介绍:

假设a.txt

一、read([size])方法

​read([size])​​方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象

f = open("a.txt")
lines = f.read()
print lines
print(type(lines))
f.close()

输出结果:

Hello
Welcome
What is the fuck...
<type 'str'> #字符串类型

二、readline()方法

从字面意思可以看出,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。

1

2

3

4

5

6

7

​f ​​​​=​​​ ​​open​​​​(​​​​"a.txt"​​​​)​

​line ​​​​=​​​ ​​f.readline()​

​print​​​​(​​​​type​​​​(line))​

​while​​​ ​​line:​

​print​​​ ​​line,​

​line ​​​​=​​​ ​​f.readline()​

​f.close()​

输出结果:

<type 'str'>
Hello
Welcome
What is the fuck...

三、readlines()方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存

f = open("a.txt")
lines = f.readlines()
print(type(lines))
for line in lines:
print line,
f.close()

输出结果:

1 <type 'list'>
2 Hello
3 Welcome
4 What is the fuck...

四、linecache模块

当然,有特殊需求还可以用linecache模块,比如你要输出某个文件的第n行:

1

2

3

​# 输出第2行​

​text ​​​​=​​​ ​​linecache.getline(‘a.txt',​​​​2​​​​)​

​print​​​ ​​text,​


python 读写文件类型主要有txt, csv,excel, sas,spss 和mysql,

在这里主要介绍用的最多的txt和csv文件

 

读写

方式主要分为三种:

1.python 自带的函数

read,readline ,readlines,write

2.pandas模块中的read_csv,to_csv

3.csv模块中的reader,writer

下面以txt为例进行介绍,csv文件的读写基本与txt一致,把文件名换了即可

 

txt原内容

learn python
learn pandas numpy 

 

一、python 内置函数
1.先介绍open函数
open(name[, mode[, buffering]])
name : '文件名称'。
mode : 打开模式,默认为只读(r),可以选择为写(w)
    常用的:
    r  只读 默认格式
    rb 二进制打开文件用于只读
    r+ 打开文件用于读写
    w  只写
    wb 二进制打开文件用于只写
    w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。
        如果该文件不存在,创建新文件
    
buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存

注意:

很多时候会出现以下两种情况

采用with.. as 多是为了保证程序的健壮性,防止出现IO异常,导致文件打不加

推荐使用with.. as 格式

file = open('.//data//lesson1//1.txt')
file.close()
with open('.//data//lesson1//1.txt', 'r') as file:
    print(file.read())
 
 

2.read
#读取txt文本
#方法1: read()  read()是直接读取txt中所有内容,返回字符串
file = open('.//data//lesson1//1.txt')
lines = file.read()
print(lines)
print(type(lines))
file.close() #记得把文件关闭
 输出为:

learn python
learn pandas numpy 
<class 'str'>
3.readline
# 方法2: readline 一行一行读取文件,返回的是字符串,仅当没有足够内存可以一次读取整个文件时,才应该使用.readline()
file = open('.//data//lesson1//1.txt')
 
#1.手动一行一行读
line1 = file.readline()
print(line1)
line2 = file.readline()
print(line2)  
 
file.close()
 输出为:

learn python
 
learn pandas numpy 
#方法2: readline 方法用于从文件读取整行,包括 "\n" 字符
file = open('.//data//lesson1//1.txt')
 
#2.连续读
line = file.readline()
while line:
    print(line)
    line = file.readline()
    
file.close()
输出为:

learn python
 
learn pandas numpy
#注意:readline(num) 表示读取该行中前num个字母,包含空格
file = open('.//data//lesson1//1.txt')
line = file.readline(10)
print(line)
file.close()
 输出为:

learn pyth
4.readlines
#方法3 readlines   读取整个文件所有行,保存在一个列表(list)变量中,每次读取一行
file = open('.//data//lesson1//1.txt')
lines = file.readlines()  
print(lines) #输出所有内容
 
result = []
for line in lines:
    print(line)  #一行一行输出所有内容
    result.append(line)
file.close()
输出为:

['learn python\n', 'learn pandas numpy ']
learn python
 
learn pandas numpy
5.write 写文件
#在2.txt中写入 result的结果,2.txt不存在可以自己创建
open('.//data//lesson1//2.txt','w').write('%s' % '\n'.join(result))
二、pandas模块中的read_csv(),to_csv()
#read_csv   输出为DataFrame, DataFrame后面会具体讲解
 
import pandas as pd
file_csv = pd.read_csv('.//data//lesson1.txt')
print(type(file_csv))
输出为:

<class 'pandas.core.frame.DataFrame'>
#to_csv 写文件
 
import pandas as pd
file_csv = pd.to_csv('.//data//lesson1.txt',result) #result是写入的内容
三、csv模块中的reader,writer
#csv中的reader 读文件
import csv
file = './/data//lesson1//1.txt'
data = []
with open(file,'r') as f:
    result = csv.reader(f)
    for line in result:
        data.append(line)
print(data)
输出:

[['learn python'], ['learn pandas numpy ']]
#csv中的writer 写文件,没有该文件程序会自己创建
with open('.//data//lesson1//3.txt','w') as f:
    writer = csv.writer(f)
    writer.writerows(data)
 

 

标签:csv,python,read,file,print,readline,txt,line
From: https://blog.51cto.com/u_13206712/5839967

相关文章

  • python同一个类中的方法相互调用
    方法一:self.方法名(参数列表)说明,参数列表中不需要self,也可以没有参数列表self.方法名()方法二:类名.方法名(self,参数列表)说明,也可以没有参数列表类名.方法名(self)......
  • Python数据分析,办公自动化,数据可视化
    数据可视化是为了使得数据更高效的反应数据情况,便于让读者更高效阅读,而不单是自己使用,通过数据可视化突出数据背后的规律,以此突出数据中的重要因素,并且,数据可视化可以将数据......
  • Python数据分析,办公自动化,时间序列
    时间序列数据是一种重要的结构化数据形式,在多个时间点观察或测量到的任何事物都可以形成一段时间序列。时间序列可以是固定频率的,也可以是不定期的。时间序列数据的意义取决......
  • Python数据分析,办公自动化,数据导入和导出
    写在文章的最前面,Python办公自动化有什么用?使用Python代码脚本取代繁复的手工操作,自动化,流程化处理数据。本文借助Python中的Pandas库进行数据导入,关于如何学习Pandas,我们可......
  • Python实战—修改环境变量
    环境管理环境管理是Python使用中的一大好习惯,如果你不想在一遍遍重装Python和系统中折腾循,那么环境管理是学习Python的过程中非常必要的一环。手动创建虚拟环境软件安装完毕......
  • Python实战—巴尔的摩公务员的待遇怎么样?
    本节以美国城市巴尔的摩2016年公务员的工资数据集为例,数据来源于网络,通过数据分组统计,并且可视化,分析其工资情况。数据来源importnumpyasnpimportpandasaspdimportma......
  • Python数据分析,批量合并表格
    日常在处理数据时,数据表格常常以固定的格式,这些表格都具有相同的列名,通过对数据表进行整合,可以极大的提高我们的工作效率。本节使用两种方法对于表格批量处理,一种是常规的菜......
  • Python自然语言处理,词云图生成
    自然语言处理本节介绍如何使用Python中的库,生成词云图,涉及自然语言处理的相关问题,自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之......
  • Python也能绘制奥运五环
    啊~~~五环,你比四环多一环啊~~~五环,你比六环少一环每当想起小岳岳的歌声,总是充满欢快的气氛,本节给大家介绍如何使用Python绘制奥运五环,这里借助Python中的turtle库,turtle英译为海龟......
  • 基于TensorFlow和Python的机器学习(笔记3)
    基于TensorFlow和Python的机器学习(笔记3)          embedding的原理是使用矩阵乘法来进行降维,从而达到节约存储空间的目的。word2vector工作流程图......