首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从文本文件中选择任意一行

如何从文本文件中选择任意一行
EN

Stack Overflow用户
提问于 2013-02-18 02:48:47
回答 7查看 25K关注 0票数 10

我正在努力为我的学校制定一个抽奖计划(我们有一个经济体系)。

我的程序生成数字并将其保存到一个文本文件中。当我想要从我的生成器中“拉出”数字时,我希望它能确保有赢家。

问:如何让Python从我的文本文件中随机选择一行,并将输出作为该数字?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-02-18 02:50:38

如何让python从我的文本文件中随机选择一行,并将输出作为该数字?

假设文件相对较小,以下可能是最简单的方法:

代码语言:javascript
复制
import random
line = random.choice(open('data.txt').readlines())
票数 15
EN

Stack Overflow用户

发布于 2013-02-19 06:52:55

如果文件非常大-您可以在给定文件大小的情况下查找文件中的随机位置,然后获得下一个完整的行:

代码语言:javascript
复制
import os, random 
def get_random_line(file_name):
    total_bytes = os.stat(file_name).st_size 
    random_point = random.randint(0, total_bytes)
    file = open(file_name)
    file.seek(random_point)
    file.readline() # skip this line to clear the partial line
    return file.readline()
票数 12
EN

Stack Overflow用户

发布于 2016-02-23 21:41:43

代码语言:javascript
复制
def random_line():
    line_num = 0
    selected_line = ''
    with open(filename) as f:
        while 1:
            line = f.readline()
            if not line: break
            line_num += 1
            if random.uniform(0, line_num) < 1:
                selected_line = line
    return selected_line.strip()

虽然这里给出的大多数方法都可以工作,但它们倾向于一次将整个文件加载到内存中。但不是这种方法。因此,即使文件很大,这也是可行的。

这种方法乍一看并不是很直观。这背后的定理表明,当我们在中看到N条线时,到目前为止,每条线都被选中的概率恰好是1/N。

From Page no 123 of 'Python Cookbook

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14924721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档