如何将os.walk的输出写入文件

时间:2016-02-11 12:03:36

标签: python os.walk

我有一个简单的2行代码,我需要将输出写入文件。代码如下:

import os,sys
print next(os.walk('/var/lib/tomcat7/webapps/'))[1]

怎么做?

2 个答案:

答案 0 :(得分:3)

使用 open() 方法打开文件,写信至writeclose关闭它,如下所示:

import os,sys

with open('myfile','w') as f:
    # note that i've applied str before writing next(...)[1] to file
    f.write(str(next(os.walk('/var/lib/tomcat7/webapps/'))[1]))

有关如何处理python和Reading and Writing Files文件的更多信息,请参阅What is the python "with" statement designed for?教程。以便更好地理解 with 语句。

祝你好运!

答案 1 :(得分:2)

在Python 3中,您可以将file参数用于print()函数:

import os

with open('outfile', 'w') as outfile:
    print(next(os.walk('/var/lib/tomcat7/webapps/'))[1], file=outfile)

可以节省您转换为字符串的麻烦,并在输出后添加新行。

如果你在python文件的顶部添加这个导入,那么在Python 2中也是如此:

from __future__ import print_function

同样在Python 2中,您可以使用“print chevron”语法(即如果您不添加上述导入):

with open('outfile', 'w') as outfile:
    print >>outfile, next(os.walk('/var/lib/tomcat7/webapps/'))[1]

使用print >>也会在每次打印结束时添加一个新行。

在任何Python版本中,您都可以使用file.write()

with open('outfile', 'w') as outfile:
    outfile.write('{!r}\n'.format(next(os.walk('/var/lib/tomcat7/webapps/'))[1]))

要求您显式转换为字符串并显式添加新行。

我认为第一种选择是最好的。