您的位置:首页 > 编程语言 > Python开发

python从文件读数据

2016-04-14 16:07 393 查看
最近在做一个课题,需要将拿到的数据先存入数据库,刚好自己在学习python,就想拿python解决这个问题。拿到数据解压后发现是一个近6G的txt文件,文件太大,无法打开,尝试用python读取几行数据,看看数据的结构。

1、python读文件

python使用open()函数来打开文件,语法如下:

<span style="font-size:18px;">open(name[, mode[, buffering]])</span>


open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。模式(mode)和缓冲(buffering)参数都是可选的。假设我们有一个名为note.txt的文本文件,它存放在我们的桌面,路径是C:\Users\Chen\Desktop(windows环境),可以这样打开文件:

<span style="font-size:18px;">>>> f = open(r'C:\Users\Chen\Desktop\note.txt')</span>


open函数只带一个文件名参数,默认以读模式处理文件,如果要向文件写入内容,必须显示声明模式参数。
open函数中模式参数的常用值

描述
‘r'
读模式
'w'
写模式
‘a'
追加模式
’b'
二进制模式(可添加到其他模式中使用)
‘+’
读/写模式(可添加到其他模式中使用)
python默认处理的是文本文件(字符文件),但如果处理的是一些其他类型的文件(二进制文件),如声音剪辑或者图像,则应该在模式参数中增加'b','b'模式改变处理文件的方法。如'rb'可以用来读取一个二进制文件。
open函数的第3个参数(可选)控制着文件的缓冲。

open函数中缓冲参数说明

描述
0(或False)I/O是无缓冲的,所有操作直接针对硬盘
1(或True)I/O是有缓冲的,python使用内存代替硬盘,加速程序,用flush/close才会更新硬盘上数据
>1的数字缓冲区的大小(单位字节)
-1(或任何负数)使用默认的缓冲区大小
如果有一个名为f的类文件对象,可以f.read方法,以字符串形式读取数据。f.read(4)即读取4个字符(字节),f.read()不提供参数,就读取当前到文件结尾剩下的文件。文件是被当成流来处理的,一般只能按照顺序读数据,若想在文件中读取任意位置,即随机访问,需要使用类文件的seek和tell方法。例如somefile.txt文件中的内容为Hello, World!:

>>> f = open('somefile.txt', 'r')


>>> f.read(4)


显示的结果为'Hell',这时:

>>> f.read()


显示结果为'o, World!',若

>>> f = open('somefile.txt', 'r')

>>> f.read()

则显示结果为'Hello, World!'。

逐个字符读取文件没有问题,但效率太低,有时我们想按行读取,可以使用file.readline或者file.readlines()。当不使用任何参数时,file.readline()读取单独一行并返回,从文件当前的位置开始直到一个换行符出现,也读取这个换行符;当使用一个非负的整数作为参数时,表示readline可以读取的字符(或字节)的最大值。readlines方法不使用参数时,读取一个文件中所有的行,并将其作为列表返回,当使用一个非负的整数作为参数时,表示readlines读取的行数。读取文件示例代码如下:

# -*- coding: utf-8 -*-


BUFSIZE = 1


f = open(r'E:\RFID\t0101dl.txt','r')


lines = f.readlines(BUFSIZE)


for line in lines:


print line


结果在控制台输出了很多行结果,并且还有乱码。我尝试读取另外的文件somefile.txt,发现可以读取文件内容。网上查资料发现应该是中文字符导致的乱码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: