[英]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.