2013-05-05 40 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 
相关问题