<pre><code>from random import sample
file_name = "text_database.txt"
lines = open(file_name, "r").read().splitlines()
for line in sample(lines, k=len(lines)):
print(line)
</code></pre>
<p>我使用<code>.read().splitlines()</code>而不是<code>.readlines()</code>来清除每行的尾随空格(换行符)。我也可以这样做:</p>
^{pr2}$
<p>以下是文档中对<code>random.sample</code>的描述:</p>
<blockquote>
<p>Return a k length list of unique elements chosen from the population
sequence. Used for random sampling without replacement.</p>
</blockquote>
<p>或者,您可以对行列表进行无序处理,然后对它们进行迭代。在</p>
<p>编辑-我想我现在明白了。怎么样?在</p>
<pre><code>def main():
from random import shuffle
file_name = "text_database.txt"
lines = open(file_name, "r").read().splitlines()
shuffle(lines)
sentinel = object()
def command_random():
try:
line = lines.pop()
except IndexError:
print("There are no more lines in the file!")
else:
print(line)
def command_quit():
nonlocal sentinel
sentinel = None
commands = {
"random": command_random,
"quit": command_quit
}
while sentinel is not None:
user_input = input("Please enter a command: ")
command = commands.get(user_input)
if command is None:
continue
command()
return 0
if __name__ == "__main__":
import sys
sys.exit(main())
</code></pre>