簡體   English   中英

無論如何在 python 中是否有從 a.txt 文件中隨機檢索一行,然后打印它並多次執行此操作而不重復同一行?

[英]Is there anyway in python to retrieve a line from a .txt file randomly, then print it and do this multiple times without repeating the same one?

目前,我只能隨機 select 一行。 但我不知道如何防止它被重復。 我該怎么做?

  Proxy = None
  for line in fileinput.input("file.path"):
      if random.randrange(fileinput.lineno()) == 0:
        Proxy = line

我會考慮選擇行號,然后將其從源中刪除,這將一直有效,直到您用完樣本。 那個或記憶可以幫助你忽略已經選擇的樣本。

如果您可以將所有文件保留在 memory 中,則可以使用random來對其進行洗牌,然后打印洗牌的行。

import random
random.sample(lines, len(lines))

您還可以使用random.shuffle(lines)將它們隨機播放

如果你的文件沒有 780 億行,你可以使用這個:

with open("file.path") as f:
    Proxy = random.choice(f.readlines())

如果您不希望 memory 中的整個文件,您可以使用這個:

def get_random_line():
    lines_to_skip = 0
    with open("file.path") as f:
        lines_to_skip = sum(1 for line in f)
    choice = random.randint(0, lines_to_skip)
    with open("file.path") as f:
        for line in f:
            if lines_to_skip <= 0:
                return line
            lines_to_skip -= 1

它打開文件兩次。 第一個循環是計算行數,在第二個循環中它抓取所選行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM