您的位置:

python随机取文件中的行,python随机选取字符串

本文目录一览:

写一个python脚本,要求支持从文本文件里面随机抽取若干行,写入新的文本文件里面。

import random

oldf=open('oldfile','r') #打开原文件

newf=open('newfile','w') #打开要写入文件

lines=oldf.readlines() #原文件行列表

randline=random.randint(0,len(lines)) # 若干行

for i in xrange(0,randline):

newf.write(lines[random.randint(0,len(lines))]) # 写入新文件随机行

oldf.close()

newf.close()

python如何随机读取一行

#!/usr/bin/env python

# coding: utf-8

def getfilelines(filename, eol='\n', buffsize=4096):

    """计算给定文件有多少行"""

    with open(filename, 'rb') as handle:

        linenum = 0

        buffer = handle.read(buffsize)

        while buffer:

            linenum += buffer.count(eol)

            buffer = handle.read(buffsize)

        return linenum

def readtline(filename, lineno, eol="\n", buffsize=4096):

    """读取文件的指定行"""

    with open(filename, 'rb') as handle:

        readedlines = 0

        buffer = handle.read(buffsize)

        while buffer:

            thisblock = buffer.count(eol)

            if readedlines  lineno  readedlines + thisblock:

                # inthisblock: findthe line content, and return it

                return buffer.split(eol)[lineno - readedlines - 1]

            elif lineno == readedlines + thisblock:

                # need continue read line rest part

                part0 = buffer.split(eol)[-1]

                buffer = handle.read(buffsize)

                part1 = buffer.split(eol)[0]

                return part0 + part1

            readedlines += thisblock

            buffer = handle.read(buffsize)

        else:

            raise IndexError

def getrandomline(filename):

    """读取文件的任意一行"""

    import random

    return readtline(

        filename,

        random.randint(0, getfilelines(filename)),

        )

if __name__ == "__main__":

    import sys

    import os

    if len(sys.argv) == 1:

        print getrandomline("/home/tim/documents/users.csv")

    else:

        for f in filter(os.path.isfile, sys.argv[1:]):

            print getrandomline(f)

对于超大文件建议用逐行或分块的方式处理;逐行处理可能慢一些,但编码更简单清晰一点;上面给出的是按分块方式处理的。

python读取csv文件的某一行

1.全部读到成列表然后选取行(容易超时,乱码等问题)

2.利用迭代工具,代码如下:

from itertools import islice

with open('data.tsv', 'r') as f:

for line in islice(f, 1, None):

# process data

f.close()

修改islice函数中第2个参数n即可,表示读到f文件对象的第n行

python随机提取文件中的某一列的任意一个值?

需要某列的某个值?

文本格式

1 2 3

4 5 6

如果是文本的话首先f.readlines()获得所有行,

然后用随机函数, random.choice(array)随机获得列

strs.split()值转换成列表

再用随机函数random.choice(strs)

随机获得一个元素

如果是单元格的话

就是先获取单元格的行和列

然后用随机函数

random.randint(0, 有效行)

random.randint(0, 有效列)

table.cell_value(列,行)

就能获取任意值了