2013-05-05 89 views
0

我在Python中有一個以下腳本。 對於i在範圍(10000): 打印我如何將Python腳本輸出路由到文件

以上片的Python代碼打印i從0到9999的控制檯上的值。

現在我想將腳本的輸出直接路由到外部文件。
在Linux上,我可以把它做使用以下命令

$蟒蛇python_script.py> python_out.txt

什麼是Windows 7的等效命令,IDLE的Python殼牌和PyLab下?

而且,上面的腳本打印的數字從0到9999,我想採取輸出的快照, 即我想路由中的第85條記錄/號碼out1.txt OR 我想路由可以被5整除的數字out2.txt 而不改變實際的腳本。

此外,還提供了Python文檔以瞭解更多信息。

+0

並[cygwin的(http://www.cygwin.com/)幫助? – 2013-05-05 12:36:37

+0

**你是什麼意思**而不改變實際的腳本**?如果你想根據某些條件寫入不同的文件,那麼你必須修改腳本。 – 2013-05-05 12:50:41

回答

3
file1, file2 = "out1.txt", "out2.txt" 
with open(file1,'w') as f1,open(file2,"w") as f2: 
    for i in range(10000): 
     if i < 85: 
      f1.write("{0}\n".format(i)) # write to out1.txt 
     if i%5==0: 
      f2.write("{0}\n".format(i)) #write to out2.txt 
     print i     #write to stdout or python_out.txt in your case 

並運行此程序爲:

$python python_script.py > python_out.txt 
+0

Hi Ashwini,我不想更改Python腳本。 Python腳本很好。你的python代碼只能用命令行工作。它通過直接調用python腳本無法正常運行,因爲它需要2個文件名作爲參數。這不是我所期望的。更多的命令將無法在Windowsn上運行 – Kumar 2013-05-05 12:51:03

+1

@Kranti這些命令在Windows,Linux或Mac上運行良好,我已經更改了代碼,您只需在代碼中指定文件名即可。你如何期望腳本在不改變腳本的情況下以不同的方式表現? – 2013-05-05 12:57:07

+0

Ashwini,我嘗試了很多方法來運行命令,但沒有運氣。我已經在Facebook上添加了你。你能上網幫我嗎? – Kumar 2013-05-05 13:10:58

1

這是一個有點醜陋的代碼,但你不會有改變你的腳本。

class A: 
    def __init__(self, filename, predicate=(lambda ln, v:True)): 
     self.filename = filename 
     self.lines = 0 
    def write(self, text): 
     if predicate(self.lines, text): 
      with open(self.filename, 'a') as f: 
       f.write(text) 
     self.lines += text.count('\n') 

用法:

import sys 

def predicate(linenumber, text): 
    if text.isdigit(): 
     if int(text) % 5: 
      return False 
    return True 

sys.stdout = A('out1.txt', predicate) 

for i in range(10000): 
    print i