2014-01-24 74 views
0

這是我第一次提出問題。我剛開始進入編程,所以我從Python開始。所以我基本上在while循環中有一個隨機數生成器,這就是我的「r()」函數的內容。我想要做的就是取所有的數字(基本上就像無限的數量,直到我關閉空閒)並把它們放到一個文本文件中,現在我已經在萬維網上找到了這個,並且找到了解決方案,但是在windows電腦上,我有一個python 2.7的mac,任何幫助都非常贊!低於如何將輸出打印到txt文件中:Mac

from random import randrange 
def r(): 
    while True: 
     print randrange(1,10) 
+1

Windows解決方案將爲您完全相同,只是採用不同的路徑。 – mhlester

+1

只需將其重定向到文件...'python [script.py]> foo' – hd1

+0

請參見[讀寫文件](http://docs.python.org/2/tutorial/inputoutput.html#reading和 - 寫文件)在教程中。 – abarnert

回答

1

的總體思路是:open文件,write它(多次,因爲你需要),並close它。這是在本教程Reading and Writing Files解釋下。

with聲明(在該部分末尾描述)是確保文件總是獲得close d的好方法。 (否則,當你用^ C停止腳本,文件最終可能會丟掉了最後幾百字節,而你不得不使用try/finally來處理正確。)

write方法上的文件ISN並不像print聲明那樣「友好」 - 它不會自動將東西轉換爲字符串,最後添加換行符,接受多個逗號分隔值等等。所以通常,您會想用string formatting來做那些東西給你。

例如:

def r(): 
    with open('textfile.txt', 'w') as f: 
     while True: 
      f.write('{}\n'.format(randrange(1, 10))) 
+0

好吧,所以我試圖做到這一點,沒有發生任何事......而且它不是我。我複製了這些代碼並將其粘貼到閒置中。任何想法爲什麼? – user2701400

+0

@ user2701400:呃...你是否真的給'r()'添加了一個調用?你確定你正在尋找的目錄與你正在運行的當前工作目錄相同嗎?沒有[完整示例](http://stackoverflow.com/help/mcve),沒有人可以調試您的代碼... – abarnert

1

你需要調用的函數,然後將輸出重定向到文件或使用Python API來編寫一個文件。你的整個腳本可以是:

from random import randrange 
def r(): 
    while True: 
     print randrange(1,10) 
r() 

然後你可以運行python script_name.py > output.txt

如果您想使用Python API來編寫一個文件,你的腳本應該進行修改,以類似以下內容:

from random import randrange 
def r(): 
    with open('somefile.txt', 'w') as f: 
     while True: 
      f.write('{}\n'.format(randrange(1,10))) 
r() 

with語句將負責適當地關閉文件實例。