python从文件读数据

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

1、python读文件

python使用open()函数来打开文件,语法如下:
<span style="font-size:18px;">open(name[, mode[, buffering]])</span>
o pen函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。模式(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,发现可以读取文件内容。网上查资料发现应该是中文字符导致的乱码。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值