回答
你可以從命令行嘗試這個 - 不確定是否完全隨機,但至少是一個開始。
$ lines=$(wc -l file | awk '{ print $1 }'); sed -n "$((RANDOM%lines+1))p" file
這是這樣工作的:
首先,它設置包含在文件中的行數的變量。
lines=$(wc -l file | awk '{ print $1 }')
後來,它打印在該範圍內的隨機行:
sed -n "$((RANDOM%lines+1))p" file
正如馬克蘭塞姆指出的那樣,在上述溶液中讀取整個文件。我找到了一種方法來選擇一個沒有(必然)必須讀取整個文件的隨機行,但只是其中的一部分。使用(我認爲)相同的算法,這裏是鏈接到兩個Perl和Python的解決方案:
的Perl:How do I pick a random line from a file?
perl -e 'srand;' \ -e 'rand($.) < 1 && ($it = $_) while <>;' \ -e 'print $it' FILE
的Python:Retrieving a Line at Random from a File of Unknown Size
import random def randomLine(file_object): "Retrieve a random line from a file, reading through the file once" lineNum = 0 selected_line = '' while 1: aLine = file_object.readline() if not aLine: break lineNum = lineNum + 1 # How likely is it that this is the last line of the file? if random.uniform(0,lineNum)<1: selected_line = aLine file_object.close() return selected_line
'wc'將讀取整個文件,'sed'將讀取所選擇的行。這在技術上回答了這個問題,但違反了規定的限制。 –
@MarkRansom,你是對的 - 我已經更新了我的答案:) –
如果你想在python中做到這一點。這個給你。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import os
import random
def test():
filename = 'yourfile'
info = os.popen('wc -l filename').readlines()
line_number = info[0].split()[0]
r = random.randrange(line_number)
cmd = 'sed -n "%dp" %s' % (r, filename)
info = os.popen(cmd).readlines()
print info
if __name__ =='__main__':
test()
可能是你可以使用linecache,
import linecache
linecache.getline(file_path, line_no)
- 1. 從Haskell中的文件中挑選一個隨機行
- 2. 如何從隨機挑選的多個文件執行文件?
- 3. 從文件中隨機選擇一行
- 4. Python - 從一個非常大的文件中讀取隨機行並追加到另一個文件
- 5. 從異常數組中挑選一個隨機元素
- 6. 從一組常量中挑選2個隨機值
- 7. 從MySQL中的一組數字中挑選一個隨機數
- 8. 從Lucene的非常大的文件中獲取隨機行
- 9. 從Tensorflow中從另一箇中挑選隨機張量
- 10. 一次從文件中挑選多行
- 11. 如何從大文本文件中隨機採樣行 - 從命令行
- 12. 從4個表中隨機挑選
- 13. 從一組數字中挑選一個隨機數
- 14. 試圖從一個隨機行從一個文本文件中添加文本
- 15. 隨機選擇從一個文件的幾行,然後從第二個文件
- 16. 從pyspark的一個非常大的數據框中選擇隨機列
- 17. 如何從python中的一個文件中讀取隨機行?
- 18. jQuery從字符串數組中挑選一個隨機值
- 19. 球拍 - 從列表中挑選一個隨機元素
- 20. CSS從數組中挑選一個隨機顏色
- 21. 從陣列中挑選一個隨機數組元素
- 22. 從sql mtouch測驗挑選隨機行
- 23. 從一個範圍的關鍵幀中挑選一個隨機幀
- 24. 從文本文件中返回一個隨機行
- 25. 從matlab中的文本文件運行一個命令
- 26. 從mysql中的表中隨機選擇一個'已發佈'行
- 27. 如何從MySQL中的表中選擇一個隨機行?
- 28. 從命令行隨機解析Python中的文件
- 29. 如何從SQL查詢選擇中選擇一個隨機行?
- 30. 隨機從Umbraco中的文件夾中選擇一個圖像
這是不可能來接從文件中隨機線不知道時間提前多少行是該文件,其中每行開始英寸否則,您必須閱讀整個文件。請參閱http://stackoverflow.com/questions/232237/whats-the-best-way-to-return-a-random-line-in-a-text-file-using-c以獲取靈感。 –
您可以使用_wc_和_sed_ ..看看t jim的回答 –
行長限制在整個文件中是不變的? – moooeeeep