精华内容
下载资源
问答
  • 首先创建个大于内存的文本文件, 这里创建的写了20亿个单词的文件是13G, 我的电脑内存是8G import random from datetime import datetime start = datetime.now() f = open("E:/big.txt", 'w', encoding="utf-8...

    首先创建一个大于内存的文本文件, 这里创建的写了20亿个单词的文件是13G, 我的电脑内存是8G

    import random
    from datetime import datetime
    
    start = datetime.now()
    f = open("E:/big.txt", 'w', encoding="utf-8")
    words = ["hello", "spark", "hadoop", "world", "hive", "flink"]
    num = 0
    while True:
        index = random.randint(0, 5)
        line_10 = [words[index] + '\n'] * 100
        f.write("".join(line_10))
        num += 1
        if num == 2e+7:
            break
            
    f.close()
    end = datetime.now()
    print("时间消耗:", (end - start))

    为了节省时间一次写相同的内容写十行, 总共耗时

    下面是读取并统计所有的单词

    start = datetime.now()
    f = open("E:/big.txt", 'r', encoding="utf-8")
    mydict = {}
    line = f.readline()
    while line:
        mydict[line] = mydict.get(line, 0) + 1
        line = f.readline()
    f.close()
    
    print(mydict)
    wordSum = 0
    for key, value in mydict.items():
        wordSum += value
    
    print("单词总数:", wordSum)
    end = datetime.now()
    print("时间消耗:", (end - start))

    总共耗时大约一个小时的时间, 我不知道有没有其他的更高效的读取文本文件的方法, 如果有请朋友们告诉一声

    如果直接读取全部的内容则会直接报内存溢出

    展开全文
  • 以上这篇python之文件读取一行一行的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python 读取文本文件的行数据,文件.splitlines()的方法python...
  • 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())

    展开全文
  • python和shell(awk命令) 可以实现直接读取文件的某一行,按行号进行读取 。并可以精准的取得该行的某个字段,这个有点类似于x轴、y轴定位某个点的操作。一、awk取某行某列值awk 可以设置条件来输出文件中m行到n行...

    python和shell(awk命令) 可以实现直接读取文件的某一行,按行号进行读取 。并可以精准的取得该行的某个字段,这个有点类似于x轴、y轴定位某个点的操作。

    一、awk取某行某列值

    awk 可以设置条件来输出文件中m行到n行中每行的指定的k字段,使用格式如下:awk 'NR==m,NR==n {print $k}' path/filename

    m,n,k表示实在的数值。如果要用变量来表示m,n的值,则变量需要用单引号将其引起来。NR,{print }是awk命令在此用法下的规定字段;path/filename表示读取文件的路径及文件名。这里指定了两行,如果只指定一行,可以这样写:awk 'NR==m {print $k}' path/filename

    二、python取某行某列

    标准库提供的linecache模块提供具体取某一行的方法:

    import linecache

    theline = linecache.getline(filepath, line_number)

    取到相关的行以后,再对theline做split切分成list,再对list索引取值就行了。如theline.split()[2] 。

    三、linecache模块的用法

    即然,提到了linecache模块,这里就列下linecache的其他方法。linecache模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行。

    linecache.getlines(filename)从名为filename的文件中得到全部内容,输出为列表格式,以文件每行为列表中的一个元素,并以linenum-1为元素在列表中的位置存储

    linecache.getline(filename,lineno)从名为filename的文件中得到第lineno行。这个函数从不会抛出一个异常–产生错误时它将返回”(换行符将包含在找到的行里)。如果文件没有找到,这个函数将会在sys.path搜索。

    linecache.clearcache()清除缓存。如果你不再需要先前从getline()中得到的行

    linecache.checkcache(filename)检查缓存的有效性。如果在缓存中的文件在硬盘上发生了变化,并且你需要更新版本,使用这个函数。如果省略filename,将检查缓存里的所有条目。

    linecache.updatecache(filename)更新文件名为filename的缓存。如果filename文件更新了,使用这个函数可以更新linecache.getlines(filename)返回的列表。

    示例:

    # cat a.txt

    1a

    2b

    3c

    4d

    5e

    6f

    7g

    1、获取a.txt文件的内容

    >>> a=linecache.getlines('a.txt')

    >>> a

    ['1a ', '2b ', '3c ', '4d ', '5e ', '6f ', '7g ']

    2、获取a.txt文件中第1-4行的内容

    >>> a=linecache.getlines('a.txt')[0:4]

    >>> a

    ['1a ', '2b ', '3c ', '4d ']

    3、获取a.txt文件中第4行的内容

    >>> a=linecache.getline('a.txt',4)

    >>> a

    '4d '

    注意:

    使用linecache.getlines('a.txt')打开文件的内容之后,如果a.txt文件发生了改变,如你再次用linecache.getlines获取的内容,不是文件的最新内容,还是之前的内容,此时有两种方法:

    1、使用linecache.checkcache(filename)来更新文件在硬盘上的缓存,然后在执行linecache.getlines('a.txt')就可以获取到a.txt的最新内容;

    2、直接使用linecache.updatecache('a.txt'),即可获取最新的a.txt的最新内容。

    读取文件之后你不需要使用文件的缓存时需要在最后清理一下缓存,使linecache.clearcache()清理缓存,释放缓存。

    展开全文
  • 站长用Python写了个可以提取csv任一列的代码,欢迎使用。Github链接csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格:就可以存储为csv文件,文件内容是:No.,Name,Age,Score1...

    站长用Python写了一个可以提取csv任一列的代码,欢迎使用。Github链接

    csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格:

    1288.jpg

    就可以存储为csv文件,文件内容是:

    No.,Name,Age,Score

    1,Apple,12,98

    2,Ben,13,97

    3,Celia,14,96

    4,Dave,15,95

    假设上述csv文件保存为"A.csv",如何用Python像操作Excel一样提取其中的一行,也就是一条记录,利用Python自带的csv模块,有两种方法可以实现:

    第一种方法使用reader函数,接收一个可迭代的对象(比如csv文件),能返回一个生成器,就可以从其中解析出csv的内容:比如下面的代码可以读取csv的全部内容,以行为单位:import csv

    with open('A.csv','rb') as csvfile:

    reader = csv.reader(csvfile)

    rows = [row for row in reader]

    print rows得到:[['No.', 'Name', 'Age', 'Score'],

    ['1', 'Apple', '12', '98'],

    ['2', 'Ben', '13', '97'],

    ['3', 'Celia', '14', '96'],

    ['4', 'Dave', '15', '95']]

    要提取其中第二行,可以用下面的代码:

    import csv

    with open('A.csv','rb') as csvfile:

    reader = csv.reader(csvfile)

    for i,rows in enumerate(reader):

    if i == 2:

    row = rows

    print row得到:['2', 'Ben', '13', '97']这种方法是通用的方法,要事先知道行号,比如Ben的记录在第2行,而不能根据'Ben'这个名字查询。这时可以采用第二种方法:

    第二种方法是使用DictReader,和reader函数类似,接收一个可迭代的对象,能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,而这个字典的键则是这个单元格的标题(即列头)。用下面的代码可以看到DictReader的结构:

    import csv

    with open('A.csv','rb') as csvfile:

    reader = csv.DictReader(csvfile)

    rows = [row for row in reader]

    print rows得到:

    [{'Age': '12', 'No.': '1', 'Score': '98', 'Name': 'Apple'},

    {'Age': '13', 'No.': '2', 'Score': '97', 'Name': 'Ben'},

    {'Age': '14', 'No.': '3', 'Score': '96', 'Name': 'Celia'},

    {'Age': '15', 'No.': '4', 'Score': '95', 'Name': 'Dave'}]

    如果我们想用DictReader读取csv的某一列,就可以用列的标题查询:

    import csv

    with open('A.csv','rb') as csvfile:

    reader = csv.DictReader(csvfile)

    for row in reader:

    if row['Name']=='Ben':

    print row就得到:

    {'Age': '13', 'No.': '2', 'Score': '97', 'Name': 'Ben'}可见,DictReader很适合读取csv的的行(记录)。

    1、csv简介

    CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本

    格式,用以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的文件,它的使用是比

    较广泛的(Kaggle上一些题目提供的数据就是csv格式),csv虽然使用广泛,但却没有通用的标准,所以在处理csv

    格式时常常会碰到麻烦,幸好Python内置了csv模块。下面简单介绍csv模块中最常用的一些函数。

    2、csv模块中的函数

    reader(csvfile, dialect='excel', **fmtparams)

    参数说明:

    csvfile,必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象,如果是文件对

    象,打开时需要加"b"标志参数。

    dialect,编码风格,默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义,通过调用register_dialect方法来注册,下文会提到。

    fmtparam,格式化参数,用来覆盖之前dialect对象指定的编码风格。

    import csv

    with open('test.csv','rb') as myFile:

    lines=csv.reader(myFile)

    for line in lines:

    print line

    'test.csv'是文件名,"rb’中的r表示“读”模式,因为是文件对象,所以加"b’。open()返回了一个文件对象

    myFile,reader(myFile)只传入了第一个参数,另外两个参数采用缺省值,即以excel风格读入。reader()返回一个

    reader对象lines,lines是一个list,当调用它的方法lines.next()时,会返回一个string。上面程序的效果是将csv

    文件中的文本按行打印,每一行的元素都是以逗号分隔符','分隔得来。

    在我的test.csv文件中,存储的数据如图:

    Center

    程序输出:

    ['1', '2']

    ['3', 'a']

    ['4', 'b']

    补充:reader对象还提供一些方法:line_num、dialect、next()

    writer(csvfile, dialect='excel', **fmtparams)

    参数的意义同上,这里不赘述,直接上例程:

    with open('t.csv','wb') as myFile:

    myWriter=csv.writer(myFile)

    myWriter.writerow([7,'g'])

    myWriter.writerow([8,'h'])

    myList=[[1,2,3],[4,5,6]]

    myWriter.writerows(myList)

    'w'表示写模式。

    首先open()函数打开当前路径下的名字为't.csv'的文件,如果不存在这个文件,则创建它,返回myFile文件对象。

    csv.writer(myFile)返回writer对象myWriter。

    writerow()方法是一行一行写入,writerows方法是一次写入多行。

    注意:如果文件't.csv'事先存在,调用writer函数会先清空原文件中的文本,再执行writerow/writerows方法。

    补充:除了writerow、writerows,writer对象还提供了其他一些方法:writeheader、dialect

    register_dialect(name, [dialect, ]**fmtparams)

    这个函数是用来自定义dialect的。

    参数说明:

    name,你所自定义的dialect的名字,比如默认的是'excel',你可以定义成'mydialect'

    [dialect, ]**fmtparams,dialect格式参数,有delimiter(分隔符,默认的就是逗号)、quotechar、

    csv.register_dialect('mydialect',delimiter='|', quoting=csv.QUOTE_ALL)

    上面一行程序自定义了一个命名为mydialect的dialect,参数只设置了delimiter和quoting这两个,其他的仍然采用

    默认值,其中以'|'为分隔符。接下来我们就可以像使用'excel'一样来使用'mydialect'了。我们来看看效果:

    在我test.csv中存储如下数据:

    Center

    以'mydialect'风格打印:

    with open('test.csv','rb') as myFile:

    lines=csv.reader(myFile,'mydialect')

    print lines.line_num

    for line in lines:

    print line

    输出:

    ['1,2', '3']

    ['4,5', '6']

    可以看到,现在是以'|'为分隔符,1和2合成了一个字符串(因为1和2之间的分隔符是逗号,而mydialect风格的分隔

    符是'|'),3单独一个字符串。

    对于writer()函数,同样可以传入mydialect作为参数,这里不赘述。

    unregister_dialect(name)

    这个函数用于注销自定义的dialect

    此外,csv模块还提供get_dialect(name)、list_dialects()、field_size_limit([new_limit])等函数,这些都比较

    简单,可以自己试试。比如list_dialects()函数会列出当前csv模块里所有的dialect:

    print csv.list_dialects()

    输出:

    ['excel-tab', 'excel', 'mydialect']

    'mydialect'是自定义的,'excel-tab', 'excel'都是自带的dialect,其中'excel-tab'跟'excel'差不多,

    只不过它以tab为分隔符。

    csv模块还定义了

    一些类:DictReader、DictWriter、Dialect等,DictReader和DictWriter类似于reader和writer。

    一些常量:QUOTE_ALL、QUOTE_MINIMAL、.QUOTE_NONNUMERIC等,这些常量可以作为Dialects and Formatting Parameters的值。

    先写到这,其他的以后用到再更新。

    展开全文
  • python里面,读取或写入csv文件时,首先要import csv这个库,然后利用这个库提供的方法进行对文件的读写。 1、获取每一行 读取csv文件,用的是csv.reader()这个方法。返回结果是一个_csv.reader的对象,我们可以对...
  • 一行一行得从文件读数据,显然比较慢;不过很省内存带缓存的文件读取 readlines 速度最快1. 最基本的读文件方法:?# File: readline-example-1.pyfile = open("sample.txt")while 1:line = file.readline...
  • 处理文件时,一个常见的需求就是读取文件的最后一行。那么这个需求用python怎么实现呢?一个朴素的想法如下: with open('a.log', 'r') as fp: lines = fp.readlines() last_line = lines[-1] 即使不考虑异常...
  • 如何用python循环读取下面.txt文件中,用红括号标出来的数据呢?首先,观察数据可知,不同行的第个数据元素不一样,所以考虑直接用正则表达式。再加上,对读和写文件的操作,就了注:我用的是pycharm+python2.7...
  • 本文要点刚要:()读文本文件格式的数据函数:...跳行读取文本文件,用skiprows5.数据太大时需要逐块读取文本数据用chunksize进行分块。(二)将数据写成文本文件格式函数:to_csv范例如下:()读取文本文件格...
  • 由于增加了从文件中选择的在统计上必须均匀分布的要求,因此我提供了这种简单的方法。"""randsamp - extract a random subset of n lines from a large file"""import randomdef ...
  • 我有一个输出类似于这样一个文件:Python读取一行并与当前行进行比较024688024468866out.txt看起来是这样的:0246880244468866我的代码:x = open('out.txt','r')for current_line in x:prev_line = curren...
  • 读取txt列,python一行

    千次阅读 2016-09-29 17:23:59
    #读取txt文档的某一列,python一行流 a=[float(l.split()[10])for l in open('d:/1.txt')] print(a) 文件样子1 2 3 1 3 92 3 10
  • python一行读取多个数字

    千次阅读 2018-08-21 12:44:34
    最简单快捷的方式: l = list(map(int, input().split())) print(l)  
  • )while 1:line = file.readline()if not line:breakpass # do somethingfile.close()一行一行得从文件读数据,显然比较慢;不过很省内存;测试读10M的sample.txt文件,每秒大约读32000行;2:fileinputimport ...
  • def readlinefile(): ...#读取一行,也可以传入要读取的字符数,不传则读取整行 filelist[‘readlink’] = handle.readline() handle.seek(0,0) #恢复文件指针位置 #读取文件多有行,保存在一个列表中 filelist[‘rea
  • 所以我想从文件中读取并将其中的每一行放入列表中.假设我有一个名为MyFile.txt或MyFile.csv的文件,其中包含以下三行数字/小数:49.55,2,77.09,18,1,2.34,32.1133,11.22,33.21,56,76.558,9,44.7,90.99,12.21,1.01我...
  • python读取文本某一行内容

    千次阅读 2020-03-19 14:56:52
    时常遇到需要读取文本的指定某一行或者某几行的内容。总结方法有两种。 方法一:从头扫描,跳过不关心的行 import linecache linecache.getline('./data.txt', 5) 读取文件的第5行,实际该文件会整个缓存起来,...
  • Python读取文件中关键字的一行和下一行 filename = 'E:/ETL/舟山.txt' # 读取文件 pos = [] Efield = [] # count = len(open(filename,'r',encoding = 'utf-8').readlines()) # print(count) fout = open('E:/ETL/...
  • 以上这篇python行读取文件,去掉每行的换行符\n的实例就是小编分享给大家的全部内容了,希望能给大家个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:Python处理文本换行符实例代码Python行读取...
  • Python迭代器,一行一行读取文本

    万次阅读 2016-11-07 20:18:56
    将这个文本文件按行读取,每行一个元素放到一个list中。但是需要将整个文本文件先全部装入内存中。 如果文本文件太大,不能一次性读入内存怎么办。要使用Python中的迭代器,一次读取一个成员,然后对这个成员进行...
  • Python行读取大文件

    千次阅读 2019-05-13 23:37:09
    由于机器的内存只有8G,所以不能一次将磁盘上的文件全部读入内存,需要一行一行读取文件。 Python按行读取文件主要是使用file.readline方法或者利用file对象的迭代器性质,而file.readlines方法则是一次把所有内容...
  • 如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了:count = len(open(filepath,"rU").readlines())如果是非常大的文件,上面的方法可能很慢,甚至失效.此时,可以使用循环...
  • 读取最后一行是lines[-1] 我在这里每行是单独给出的,所以将最后一行再给进去就行 备注:底下这种类型是list 可以用time[0]得到其字符串值 原始参考链接

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,160
精华内容 2,064
关键字:

python一行一行读取

python 订阅