1. Python如何从文件读取数据
1.1 读取整个文件
要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下)
PI_DESC.txt
3.1415926535897932384626433832795028841971
file_reader.py
with open("PI_DESC.txt") as file_object:contents = file_object.read()print(contents)
我们可以看出,读取文件时,并没有使用colse()方法,那么未妥善的关闭文件,会不会导致文件收到损坏呢?在这里是不会的,因为我们在open()方法前边引入了关键字with,该关键字的作用是:在不需要访问文件后将其关闭
1.2文件路径
程序在读取文本文件的时候,如果不给定路径,那么它会先在当前目录下进行检索,有时候我们需要读取其他文件夹中的路径,例如:
2. python怎么读取txt文件
方法一:
f=open("foo.txt")#返回一个文件对象line=f.readline()#调用文件的readline()方法whileline:printline,#后面跟','将忽略换内行符#print(line,end='')容#在Python3中使用line=f.readline()f.close()
方法二:for line in open("foo.txt"):print line,
方法三:
f=open("c:\1.txt","r")
lines=f.readlines()#读取全部内容
forlineinlines
printline
黑马程序员的Python课程非常的全面系统,网上也有很多的免费教程,想学习的小伙伴,可以下载学习下。
3. Python按行读取文件的简单实现方法
Python按行读取文件的简单实现方法下面小编就为大家带来一篇Python按行读取文件的简单实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。1:readline() file = open("sample.txt") while 1: line = file.readline() if not line: break pass # do somethingfile.close()一行一行得从文件读数据,显然比较慢;不过很省内存;测试读10M的sample.txt文件,每秒大约读32000行;2:fileinput import fileinput for line in fileinput.input("sample.txt"): pass写法简单一些,不过测试以后发现每秒只能读13000行数据,效率比上一种方法慢了两倍多;3:readlines() file = open("sample.txt") while 1: lines = file.readlines(100000) if not lines: break for line in lines: pass # do somethingfile.close()用同样的数据测试,它每秒可以读96900行数据!效率是第一种方法的3倍,第二种方法的7倍!4:文件迭代器每次只读取和显示一行,读取大文件时应该这样: file = open("sample.txt") for line in file: pass # do somethingfile.close()以上就是小编为大家带来的Python按行读取文件的简单实现方法全部内容了
4. python对文本文件的读有哪些方法,写有哪些方法
1 文件读取全文本操作在一定场景下我们需要把文本全部内容读取出来,进行处理。python提供三种函数读取文件,分别是read readline readlines,read():读取文件的全部内容,加上参数可以指定读取的字符。readline():读取文件的一行。readlines():读取文件的所有行到内存中。不同场景下我们可以选择不同函数对文件进行读取。1.1 方法一file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r")txt=file.read()# 全文本的处理file.close()使用read函数将文件中的内容全部读取,放在字符串变量txt中。这样操作适合于文本较小,处理简单的情况,当文件较大时,这种方式处理时不合适的。一次性读取较大的文件到内存中,会耗费较多的时间和资源。这时候分批处理效果更好。1.2 方法二file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r")txt= file.read(4)# 文本的处理while txt != ""txt= file.read(4)# 批量文本处理file.close()这种方法适合于分批处理文本信息,每次批量读入,批量处理,不会对内存造成较大的压力。1.3 方法三file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r")for line infile.readlines():# 处理每一行数据file.close()这种处理方式适合处理以行为分割特点的文本,并且文本较小,因为这种处理方式需要一次性把文件所有内容读取到内存中。1.4 方法四file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r") # 这里的file时文件句柄for line infile:# 处理每一行数据file.close()这种方式和方法三中的区别是分行读入,逐行处理,不会一次性把文件所有内容都读入到内存中,对一些大文件的处理是很有效的。2 文件写入文本操作文件写入有两种写入函数和一种辅助支持。write():向文件中写入一个字符或者字节流writelines():将一个元素全为字符串的列表写入到文件中 需要注意的是,writelines写入列表元素的时候会把列表元素的内容拼接到一起写入,不会有换行和空格 。seek(): 辅助写入函数offset偏移量参数代表含义如下0 – 文件开头1 – 当前位置2 – 文件结尾2.1 方法一file_name = input("output.txt", "w+")text= "hello world!"file_name.write(text)file.close()2.2 方法二file_name = input("output.txt", "w+")list= ["中午","早上","晚上"]file_name.writelines(list)for line infile:# 读取写入的数据,这时候发现是没有任何内容的file.close()我们增加一行代码就可以读取到写入的文件内容,利用seek()函数调整写操作指针的位置,可以实现写操作之后的正常读取。file_name = input("output.txt", "w+")list= ["中午","早上","晚上"]file_name.readlines(list)file_name.seek(0) # 调整写的指针到文件的开始位置for line infile:# 读取写入的数据,这时候会读出一行写入的数据。file.close()
5. Python读取文件内容的方法有几种
filename=open('i:\\install\\test.txt','r+')#读取xx路径xx文件;r+代表的是读写并存方式 print filename.read()#读取所有的文件
6. python读取xml文件有哪些方法
1、以下几种方法建议初学者使用:
xml.etree.ElementTree
xml.dom
xml.dom.minidom
xml.dom.pulldom
xml.parsers.expat
其中,第一个模块更加轻便简介,对于简单的xml文档,推荐使用
下面的方法涉及知识比较多,熟练掌握上面方法后可以了解使用:
2、Dom读取
3、Dom4j读取使用dom4j需要导入相关的jar包
import java.io.File;import java.util.Iterator;import java.util.List;
4、JDom读取使用jdom需要导入相关的jar包
import java.io.FileInputStream;
import java.io.InputStream;
5、Sax读取
6、properties的读取
7. python怎么提取出文件里的指定内容
python读取文件内容的方法:
一.最方便的方法是一次性读取文件中的所有内容并放置到一个大字符串中:
all_the_text = open('thefile.txt').read( )# 文本文件中的所有文本all_the_data = open('abinfile','rb').read( )# 二进制文件中的所有数据
为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用的文件对象占用内存。举个例子,对文本文件读取:
file_object = open('thefile.txt')try:all_the_text = file_object.read( )finally:file_object.close( )
不一定要在这里用Try/finally语句,但是用了效果更好,因为它可以保证文件对象被关闭,即使在读取中发生了严重错误。
二.最简单、最快,也最具Python风格的方法是逐行读取文本文件内容,并将读取的数据放置到一个字符串列表中:list_of_all_the_lines = file_object.readlines( )
这样读出的每行文本末尾都带有""符号;如果你不想这样,还有另一个替代的办法,比如:list_of_all_the_lines = file_object.read( ).splitlines( )list_of_all_the_lines = file_object.read( ).split('')list_of_all_the_lines = [L.rstrip('') for L in file_object]
8. python中怎么读取文件内容
用open命令打开你要读取的文件,返回一个文件对象然后在这个对象上执行read,readlines,readline等命令读取文件或使用for循环自动按行读取文件
9. python对文件的独操作有哪几种请详细说明每种方法
1.打开文件:f=open(r'E:\PythonProjects\test7\a.txt',mode='rt',encoding='utf-8')以上三个单引号内分别表示:要打开的文件的路径,mode为文件打开方式具体介绍在下文,encoding为文件的字符编码,一般默认为utf-82.读写文件:data=f.read() # 读文件f.write() # 写文件3.关闭文件:f.close()4.为了简便,一般采用上下文的方法进行文件操作,可不用关闭文件with open('a.txt',mode='rt',encoding='utf-8') as f:data=f.read() print(data)with open('a.txt',mode='wt',encoding='utf-8') as f: f.write('hello world')5.控制文件读写的操作:r:(默认模式):只读:以该模式打开文件时,若文件不存在则报错,若文件存在,则文件指针在文件开头,即从文件开头开始读文件w:只写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则清空文件内容,文件指针移到开头a:追加写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则将文件指针移到文件末尾,在文件末尾写入新的内容6.控制文件读写内容的模式:(t 和 b都不能单独使用,必须与r,w,a结合使用)t:(默认):无论读写都是以字符为单位,只能识别文本文件,必须要制定encodingb:无论读写都是以字节为单位,可以识别所有文件,一定不能指定encoding7.文件的拷贝with open ('a.txt',mode='rb') as af,\ open('b.txt',mode='wb') as bf: data=af.read f.write(data)执行程序后,打开文件,即可发现文件已成功拷贝,这里使用 b 而不是用 t 模式,是因为文件有多种格式8.文件的修改:文件的修改是在硬盘上实现文件的覆盖,相当于一个新的文件以旧的文件名来命名的; 文件的修改有俩种方式,分别适用于不同的情景方式一(适用于容量小的文件):这种方式的原理是:创建一个新的文件,将旧文件的内容拷贝到新的文件中;这样内存里就存在俩个文件,故不适用于容量大的文件,具体代码见下方 Viewwith open('a.txt',mode='rt',encoding='utf-8') as f: data=f.read() data_new=data.replace('yang', 'yv')with open('b.txt',mode='wt',encoding='utf-8')as p: p.write(data_new)方式二(适用于容量大的文件):此方式的原理为:读取旧文件的一行内容,修改后写到临时文件中,循环往复直到写完,然后将源文件删除,将临时文件命名为源文件名.这种方式在内存中只存在2行文件,节省内存,可用于大文件import oswith open('b.txt',mode='rt',encoding='utf-8') as f,\ open('.b.txt.swap',mode='wt',encoding='utf-8') as p: for line in f: p.write(line.replace('yv','yang')) # 调用replace方法,将源文件中的'yv',换成'yang'os.remove('b.txt')os.rename('.b.txt.swap','b.txt')9. 文件的阶段:truncate(n)将文件中n个字节后内容全删了,当 n 不存在时,即删除文件全部内容10.文件内指针的移动f.seek(): 指针的移动是以字节为单位的seek 有三种模式:0:(默认模式) 指针在文件开头,只有在 0 模式可以在 t 模式下用,也可以在 b 模式下用,而 1 ,2 模式只能在 b 模式下使用1:指针在当前位置2:指针在文件末尾以下为具体事例:# 0with open('a.txt',mode='rt',encoding='utf-8')as f: f.seek(3,0) print(f.tell()) # 指针当前位置 print(f.read()) # 从指针后读出所有内容 # 1 参照指针当前位置 with open('a.txt',mode='rb')as f: f.read(2) f.seek(4,1) print(f.tell()) print(f.read().decode('utf-8')) # 2 参照文件末尾 with open('a.txt',mode='rb')as f: f.seek(-5,2) print(f.tell()) print(f.read().decode('utf-8'))当 seek处于 2 模式时,可以将文件中新加入的内容打印出来,具体代码如下:# 另一个文件进行写操作,写的代码如下: with open('a.txt',mode='at',encoding='utf-8')as f: f.write('hello world\n')# 每在文件中写入新的内容,都打印出来,以下代码执行打印操作:import timewith open('a.txt',mode='rb')as f: f.seek(0,2) while True: line=f.readline() # readline 可以读取没有内容的部分 # print(line.decode('utf-8')) if len(line)==0: time.sleep(0.1) else: print(line.decode('utf-8'))
10. python 读取大文件数据怎么快速读取
python中读取数据的时候有几种方法,无非是read,readline,readlings和xreadlines几种方法,在几种方法中,read和xreadlines可以作为迭代器使用,从而在读取大数据的时候比较有效果.在测试中,先创建一个大文件,大概1GB左右,使用的程序如下:[python] view plainprint?import os.path import time while os.path.getsize('messages') <1000000000: f = open('messages','a') f.write('this is a file/n') f.close() print 'file create complted' 在这里使用循环判断文件的大小,如果大小在1GB左右,那么结束创建文件。–需要花费好几分钟的时间。测试代码如下:[python] view plainprint?#22s start_time = time.time() f = open('messages','r') for i in f: end_time = time.time() print end_time – start_time break f.close() #22s start_time = time.time() f = open('messages','r') for i in f.xreadlines(): end_time = time.time() print end_time – start_time break f.close() start_time = time.time() f = open('messages','r') k= f.readlines() f.close() end_time = time.time() print end_time – start_time 使用迭代器的时候,两者的时间是差不多的,内存消耗也不是很多,使用的时间大概在22秒作用在使用完全读取文件的时候,使用的时间在40s,并且内存消耗相当严重,大概使用了1G的内存。。其实,在使用跌倒器的时候,如果进行连续操作,进行print或者其他的操作,内存消耗还是不可避免的,但是内存在那个时候是可以释放的,从而使用迭代器可以节省内存,主要是可以释放。而在使用直接读取所有数据的时候,数据会保留在内存中,是无法释放这个内存的,从而内存卡死也是有可能的。在使用的时候,最好是直接使用for i in f的方式来使用,在读取的时候,f本身就是一个迭代器,其实也就是f.read方法