精华内容
下载资源
问答
  • python读取文件最后一行两种方式1)常规方法:从前往后依次读取步骤:open打开文件。读取文件,把文件所有读入内存。遍历所有,提取指定的数据。优点:简单,方便缺点:当文件大了以后时间太慢,无法忍受2)...

    python读取文件最后一行两种方式

    1)常规方法:从前往后依次读取

    步骤:open打开文件。

    读取文件,把文件所有行读入内存。

    遍历所有行,提取指定行的数据。

    优点:简单,方便

    缺点:当文件大了以后时间太慢,无法忍受

    2)推荐方法:

    步骤:open打开日志文件。

    移动文件读取指针到文件末尾。

    从后往前移动指针直到合适的位置。

    读取文件,提取指定行的数据。

    优点:时间相对固定,适合处理大文件

    代码实现

    fname = 'test.html'

    with open(fname, 'r', encoding='utf-8') as f: # 打开文件

    lines = f.readlines() # 读取所有行

    first_line = lines[0] # 取第一行

    last_line = lines[-1] # 取最后一行

    print('文件' + fname + '第一行为:'+ first_line)

    print('文件' + fname + '最后一行为:' + last_line)

    with open(fname, 'rb') as f: # 打开文件

    # 在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始,只能seek(offset,0)

    first_line = f.readline() # 取第一行

    offset = -50 # 设置偏移量

    while True:

    """

    file.seek(off, whence=0):从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。

    如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。

    """

    f.seek(offset, 2) # seek(offset, 2)表示文件指针:从文件末尾(2)开始向前50个字符(-50)

    lines = f.readlines() # 读取文件指针范围内所有行

    if len(lines) >= 2: # 判断是否最后至少有两行,这样保证了最后一行是完整的

    last_line = lines[-1] # 取最后一行

    break

    # 如果off为50时得到的readlines只有一行内容,那么不能保证最后一行是完整的

    # 所以off翻倍重新运行,直到readlines不止一行

    offset *= 2

    print('文件' + fname + '第一行为:' + first_line.decode())

    print('文件' + fname + '最后一行为:' + last_line.decode())

    展开全文
  • 本文要点刚要:()读文本文件格式的数据函数:read_csv,read_table1.读不同分隔符的文本文件,用参数sep2.读无字段名(表头)的文本文件 ,用参数names3.为文本文件制定索引,用index_col4.跳行读取文本文件,用...

    本文要点刚要:

    (一)读文本文件格式的数据函数:read_csv,read_table

    1.读不同分隔符的文本文件,用参数sep

    2.读无字段名(表头)的文本文件 ,用参数names

    3.为文本文件制定索引,用index_col

    4.跳行读取文本文件,用skiprows

    5.数据太大时需要逐块读取文本数据用chunksize进行分块。

    (二)将数据写成文本文件格式函数:to_csv

    范例如下:

    (一)读取文本文件格式的数据集

    1.read_csv和read_table的区别:

    #read_csv默认读取用逗号分隔符的文件,不需要用sep来指定分隔符

    import pandas as pd

    pd.read_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.csv')

    1368336-20180426224121292-979964237.png

    #read_csv如果读的是用非逗号分隔符的文件,必须要用sep指定分割符,不然读出来的是原文件的样子,数据没被分割开

    import pandas as pd

    pd.read_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.txt')

    1368336-20180426224144868-1760190149.png

    #与上面的例子可以对比一下区别

    import pandas as pd

    pd.read_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.txt',sep='|')

    1368336-20180426224410679-520935790.png

    #read_table读取文件时必须要用sep来指定分隔符,否则读出来的数据是原始文件,没有分割开。

    import pandas as pd

    pd.read_table('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.csv')

    1368336-20180426224501340-507311282.png

    #read_table读取数据必须指定分隔符

    import pandas as pd

    pd.read_table('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.txt',sep='|')

    1368336-20180426224605645-1046616757.png

    2.读取文本文件时不用header和names指定表头时,默认第一行为表头

    #用header=None表示数据集没有表头,会默认用阿拉伯数字填充表头和索引

    pd.read_table('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.txt',sep='|',header=None)

    1368336-20180426224759907-1866915755.png

    #用names可以自定义表头

    pd.read_table('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.txt',sep='|',

    names=['x1','x2','x3','x4','x5'])

    1368336-20180426224858254-1016291189.png

    3.默认用阿拉伯数字指定索引;用index_col指定某一列作为索引

    names=['x1','x2','x3','x4','x0']

    pd.read_table('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.txt',sep='|',

    names=names,index_col='x0')

    1368336-20180426225022347-270755606.png

    4.以下示例是用skiprows将hello对应的行跳过后读取其他行数据,不管首行是否作为表头,都是将表头作为第0行开始数

    可以对比一下三个例子的区别进行理解

    pd.read_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data1.txt')

    1368336-20180426225126273-1981446421.png

    names=['x1','x2','x3','x4','x0']

    pd.read_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data1.txt',names=names,

    skiprows=[0,3,6])

    1368336-20180426225208651-941727855.png

    pd.read_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data1.txt',

    skiprows=[0,3,6])

    1368336-20180426225257812-1841733706.png

    pd.read_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data1.txt',header=None,

    skiprows=[0,3,6])

    1368336-20180426225330405-1103613451.png

    5.分块读取,data1.txt中总共8行数据,按照每块3行来分,会读3次,第一次3行,第二次3行,第三次1行数据进行读取。

    注意这里在分块的时候跟跳行读取不同的是,表头没作为第一行进行分块读取,可通过一下两个例子对比进行理解。

    chunker = pd.read_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data1.txt',chunksize=3)

    for m in chunker:

    print(len(m))

    print m

    1368336-20180426225501813-266640696.png

    chunker = pd.read_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data1.txt',header=None,

    chunksize=3)

    for m in chunker:

    print(len(m))

    print m

    1368336-20180426225607037-1448990798.png

    (二)将数据写入文本格式用to_csv

    以data.txt为例,注意写出文件时,将索引也写入了

    data=pd.read_table('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.txt',sep='|')

    print data

    1368336-20180426225716866-1303984639.png

    #可以用index=False禁止索引的写入。

    data=pd.read_table('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.txt',sep='|')

    data.to_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\outdata.txt',sep='!',index=False)

    1368336-20180426225814894-925833732.png

    #可以用columns指定写入的列

    data=pd.read_table('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\data.txt',sep='|')

    data.to_csv('C:\Users\xiaoxiaodexiao\pythonlianxi\test0424\outdata2.txt',sep=',',index=False,

    columns=['a','c','d'])

    1368336-20180426225838900-1320029810.png

    展开全文
  • I have a file called test which has the contents:abcdefgI am using the following python code to read this file line by line and print it out:with open('test.txt') as x:for line in x:print(x.read())The...

    1586010002-jmsa.png

    I have a file called test which has the contents:

    a

    b

    c

    d

    e

    f

    g

    I am using the following python code to read this file line by line and print it out:

    with open('test.txt') as x:

    for line in x:

    print(x.read())

    The result of this is to print out the contents of the text file except for the first line, i.e. the result is:

    b

    c

    d

    e

    f

    g

    Does anyone have any idea why it might be missing the first line of the file?

    解决方案

    Because for line in x iterates through every line.

    with open('test.txt') as x:

    for line in x:

    # By this point, line is set to the first line

    # the file cursor has advanced just past the first line

    print(x.read())

    # the above prints everything after the first line

    # file cursor reaches EOF, no more lines to iterate in for loop

    Perhaps you meant:

    with open('test.txt') as x:

    print(x.read())

    to print it all at once, or:

    with open('test.txt') as x:

    for line in x:

    print line.rstrip()

    to print it line by line. The latter is recommended since you don't need to load the whole contents of the file into memory at once.

    展开全文
  • Python读取txt文件最后一行(大文件 + 小文件) 本文转载自https://www.cnblogs.com/zhangchenliang/p/8136958.html txt文件小 file_name = 'test.txt' with open(file_name, 'r') as f: # 打开文件 lines = f....

    Python读取txt文件最后一行(大文件 + 小文件)

    本文转载自https://www.cnblogs.com/zhangchenliang/p/8136958.html

    txt文件小

    file_name = 'test.txt'
    with open(file_name, 'r') as f:	  # 打开文件
      lines = f.readlines()			  # 读取所有行
      first_line = lines[0]     # 取第一行
      last_line = lines[-1]     # 取最后一行
      print('文件' + file_name + '第一行为:' + first_line)
      print('文件' + file_name + '最后一行为:' + last_line)
    

    当文件很大时,采用这种方法不可行,资源浪费太大,采用下面方案。

    txt文件大

    file_name = 'log.txt'
    # 判断文件是否已有数据
    if not os.path.getsize(file_name):
    	raise Exception('文件没有内容!')
    with open(file_name, 'rb') as f:  # 以二进制方式打开文件
        first_line = f.readline()     # 读第一行
        off = -50     # 设置偏移量,偏移量不能太大,如果太大会报错
        while True:
            f.seek(off, 2)  # seek(off, 2)表示文件指针:从文件末尾(2)开始向前50个字符(-50)
            lines = f.readlines()  # 读取文件指针范围内所有行
            if len(lines) >= 2:  # 判断是否最后至少有两行,这样保证了最后一行是完整的
                last_line = lines[-1]  # 取最后一行
                break
            # 如果off为50时得到的readlines只有一行内容,那么不能保证最后一行是完整的
            # 所以off翻倍重新运行,直到readlines不止一行
            off *= 2
        first_line = first_line.decode('utf8')
        last_line = last_line.decode('utf8')
        print('文件 ' + file_name + '第一行为:' + first_line)
        print('文件 ' + file_name + '最后一行为:' + last_line)
    
    展开全文
  • txt文件小#coding:utf-8 ...输出为:文件第一行和最后一 '''fname = 'test.txt' with open(fname, 'r') as f: #打开文件 lines = f.readlines() #读取所有 first_line = lines[0] #取第一 last_line = lines[-
  • [work] python读取txt文件最后一行

    千次阅读 2019-01-11 11:57:46
    txt文件小 ...输出为:文件第一行和最后一 ''' fname = 'test.txt' with open(fname, 'r') as f: #打开文件 lines = f.readlines() #读取所有 first_line = lines[0] #取第一 last_line = l...
  • # -*- coding: utf-8 -*-file =open('/Users/april_chou/Desktop/WorkSpace/Selenium/seleniumTest/test.txt','r')context = file.read()print('read格式:')print(context)file.close()print()file =open('/Users/...
  • python读取txt文件,写入txt文件 、读取txt文件 方法: import numpy as np file = open("../data/track_data.txt","r") list = file.readlines()#每一行数据写入到list中 print(list) lists = [] #将...
  • 如何用python循环读取下面.txt文件中,...再加上,对读和写文件的操作,就了注:我用的是pycharm+python2.7话不多说,直接上代码import ref1=file('shen.txt','r')data1=f1.readlines()# print data1f1.close()re...
  • python读取txt文件并画图

    万次阅读 多人点赞 2017-12-17 22:31:41
    1,使用python读取txt文件已知txt文件内容如下: 0 0 1 1 2 4 3 9 4 16 5 25 6 36请以第一列为x轴,第二列为y轴画图 步骤如下: 1)使用readlines读取文件 2)建立两个空列表X,Y,将第一列的数字放入X,第...
  • I am making a program that reads time values and readings from a .txt file and plots them on a web-page with matplotlib. In my case there are lots of values, and the plot can look very confusing, and ...
  • 文件: 代码: try: file=open('food.txt',"r") #以读模式打开文件 ...except FileNotFoundError: #如果文件不存在,给提示 ... contents=file.readlines() #读取全部 for conten...
  • 广告关闭2017年12月,云+社区对外发布...pos = pos - 1 try: f.seek(pos, 2) #从文件末尾开始读 if f.read(1) == n:break except: #到达文件第一行,直接读取,退出 f.seek(0, 0) print f.readline().strip() retur...
  • 我有个文本文件(textfile1.txt),有几行例子:123This is the line 1This is the line 2This is the line 3我可以在python脚本中以书面形式返回文本文件的所有内容:123456def textFile1(self):my_file = open(&...
  • python读取txt文件

    万次阅读 2018-01-24 10:44:53
    with open('C:\\Users\\Administrator\\Desktop\\pythonio.txt') as read_file: content=read_file.read() print(content) 相比于原始文件,该输出唯一不同的地方是末尾多了个空行。为何会多出这个空行...
  • 菜鸟笔记首先读取txt文件如下:AAAAF110 0003E818 0003E1FC 0003E770 0003FFFC 90AAAAF110 0003E824 0003E208 0003E76C 0003FFFC A5AAAAF110 0003E814 0003E204 0003E760 0003FFFC 85AAAAF110 0003E7F0 0003E208 ...
  • python 读取txt文件

    2021-01-26 11:55:10
    #打开文件的模式,默认就是r模式,如果只是读文件,可以不填写mode模式 file_handle=open('1.txt',mode='r') 2、读取文件内容 2.1 read(int)函数 第一种读取方式: read(int)函数, 读取文件内容。如果指定读取长度...
  • 对于python2.7字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码成unicode,再从unicode编码成另种编码。先用一些编辑器(如editplus...
  • Python读取TXT文件时出现“ufeff“字符

    千次阅读 2018-11-23 17:48:42
    Python读取TXT文件时出现“\ufeff“字符 文章目录Python读取TXT文件时出现“\ufeff“字符问题描述:原因:解决方案: 问题描述: 目的: 在command.txt文件中读取文本,然后转换成数字列表。 这是代码内容: cmd = ...
  • 菜鸟笔记首先读取txt文件如下:AAAAF110 0003E818 0003E1FC 0003E770 0003FFFC 90AAAAF110 0003E824 0003E208 0003E76C 0003FFFC A5AAAAF110 0003E814 0003E204 0003E760 0003FFFC 85AAAAF110 0003E7F0 0003E208 ...
  • 原文地址:http:www.zisexinghen.cnlikeshare322.html、问题:python读取文件时会遇到乱码的问题? 二、解决方法:1、已utf-8格式打开文档f =open(re:pythonliaotian.txt,r,encoding=utf-8)f.se...
  • 本文实例讲述了Python实现读取文件最后n的方法。分享给大家供大家参考,具体如下:# -*- coding:utf8-*-import osimport timeimport datetimeimport mathimport stringdef get_last_line(inputfile) :filesize = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 209,962
精华内容 83,984
关键字:

python读取txt文件第一行

python 订阅