python从文件读数据
2016-04-14 16:07
393 查看
最近在做一个课题,需要将拿到的数据先存入数据库,刚好自己在学习python,就想拿python解决这个问题。拿到数据解压后发现是一个近6G的txt文件,文件太大,无法打开,尝试用python读取几行数据,看看数据的结构。
open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。模式(mode)和缓冲(buffering)参数都是可选的。假设我们有一个名为note.txt的文本文件,它存放在我们的桌面,路径是C:\Users\Chen\Desktop(windows环境),可以这样打开文件:
open函数只带一个文件名参数,默认以读模式处理文件,如果要向文件写入内容,必须显示声明模式参数。
open函数中模式参数的常用值
python默认处理的是文本文件(字符文件),但如果处理的是一些其他类型的文件(二进制文件),如声音剪辑或者图像,则应该在模式参数中增加'b','b'模式改变处理文件的方法。如'rb'可以用来读取一个二进制文件。
open函数的第3个参数(可选)控制着文件的缓冲。
open函数中缓冲参数说明
如果有一个名为f的类文件对象,可以f.read方法,以字符串形式读取数据。f.read(4)即读取4个字符(字节),f.read()不提供参数,就读取当前到文件结尾剩下的文件。文件是被当成流来处理的,一般只能按照顺序读数据,若想在文件中读取任意位置,即随机访问,需要使用类文件的seek和tell方法。例如somefile.txt文件中的内容为Hello, World!:
显示的结果为'Hell',这时:
显示结果为'o, World!',若
则显示结果为'Hello, World!'。
逐个字符读取文件没有问题,但效率太低,有时我们想按行读取,可以使用file.readline或者file.readlines()。当不使用任何参数时,file.readline()读取单独一行并返回,从文件当前的位置开始直到一个换行符出现,也读取这个换行符;当使用一个非负的整数作为参数时,表示readline可以读取的字符(或字节)的最大值。readlines方法不使用参数时,读取一个文件中所有的行,并将其作为列表返回,当使用一个非负的整数作为参数时,表示readlines读取的行数。读取文件示例代码如下:
结果在控制台输出了很多行结果,并且还有乱码。我尝试读取另外的文件somefile.txt,发现可以读取文件内容。网上查资料发现应该是中文字符导致的乱码。
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函数只带一个文件名参数,默认以读模式处理文件,如果要向文件写入内容,必须显示声明模式参数。
值 | 描述 |
---|---|
‘r' | 读模式 |
'w' | 写模式 |
‘a' | 追加模式 |
’b' | 二进制模式(可添加到其他模式中使用) |
‘+’ | 读/写模式(可添加到其他模式中使用) |
open函数的第3个参数(可选)控制着文件的缓冲。
值 | 描述 |
0(或False) | I/O是无缓冲的,所有操作直接针对硬盘 |
1(或True) | I/O是有缓冲的,python使用内存代替硬盘,加速程序,用flush/close才会更新硬盘上数据 |
>1的数字 | 缓冲区的大小(单位字节) |
-1(或任何负数) | 使用默认的缓冲区大小 |
>>> 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,发现可以读取文件内容。网上查资料发现应该是中文字符导致的乱码。
相关文章推荐
- python其中一个子线程,则退出全部线程,再退出进程
- Show me the code之Python练习册 Q14~16 excel操作
- Python一日一练17----哈希查找
- python 学习5--matplotlib画图实践
- python模块: OS模块
- python——Django(ORM连表操作)
- Python中拼接字符串和数字时报错如何处理
- python的日志输出工具
- 玩转Python机器学习七步法
- 【python】scrapy相关
- python mongoengine
- 老鸟的Python入门教程
- sublime配置python开发
- Python脚本 基础脚本训练
- Python文件处理
- Python语法点滴
- Python 特殊语法:filter、map、reduce、lambda
- dnspod 动态域名更新客户端 in python
- python下划线变量的含义
- Python3:re.complie用法