麻烦输出到文件

时间:2012-02-15 12:38:21

标签: python

我这里有这个简单的代码

import os

path = (raw_input("Enter dir: "))   
f = open('script_list.log', 'w')
for dirpath, dirname, filenames in os.walk(path):
  for filename in [f for f in filenames]:
    f.write(str(filename) + "\n")
    print os.path.join(dirpath, filename)

当我运行它时,我得到以下

Enter dir: scripts
Traceback (most recent call last):
  File "C:\Documents and Settings\CRichards\My Documents\My Dropbox\this_code.py", line 8, in <module>
    f.write(str(filename) + "\n")
AttributeError: 'str' object has no attribute 'write'

我知道它一定很简单,我只是看不到它。

2 个答案:

答案 0 :(得分:5)

当您执行f时,您正在循环中重新绑定[f for f in filenames]。当你到达f.write被调用的点时,ffilenames的最后一个成员,所以它是一个字符串。将外部f重命名为logoutput,或者更好,删除无用的列表理解:

for file name in filenames:

就足够了。

(列表推导不会引入新的范围。)

答案 1 :(得分:3)

for filename in [f for f in filenames]:

应该是

for filename in filenames: