Python 无法输出到文件

Python 无法输出到文件,python,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,

我这里有一个简单的代码

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'
我知道它一定很简单,我就是看不见。

当你在循环中重新绑定f时,你在文件名中[f代表f]。当调用f.write时,f是文件名的最后一个成员,因此它是一个字符串。将外部f重命名为类似于log或output的名称,或者更好,去掉无用的列表理解:

for file name in filenames:
够了

列表理解不会引入新的作用域。

在循环中重新绑定f,而在文件名中[f代表f]。当调用f.write时,f是文件名的最后一个成员,因此它是一个字符串。将外部f重命名为类似于log或output的名称,或者更好,去掉无用的列表理解:

for file name in filenames:
for filename in [f for f in filenames]:
够了

列表理解不会引入新的范围

for filename in [f for f in filenames]:
应该是

对于文件名中的文件名:

应该是


对于文件名中的文件名:

我一看到你的回复就解决了这个问题,当我第一次更改f=open和f.write以记录时,我就彻底地检查了f。感谢所有帮助我解决问题的人,我一看到你的回复,我就彻底地检查了f,因为我第一次更改了f=open和f.write以记录它的工作情况。感谢所有帮助我的人是的,我将f=open和f.write改为log=open和log.write,解决了这个问题。新鲜的眼睛和一切。非常感谢,我将f=open和f.write改为log=open和log.write,解决了这个问题。新鲜的眼睛和一切。非常感谢大家现在我的代码是import os path=raw\u inpunter dir:log=open'script\u list.log',w'代表os中的dirpath、dirname、filename.walkpath:for filename中的文件名[f代表filename中的f]:log.writestfilename+\n print os.path.joindirpath,filenameSolved现在我的代码是import os path=raw\u inpunter dir:log=open'script\u list.log',w'代表dirpath,dirname,os中的文件名。walkpath:for filename中的文件名[f代表f]:log.writestfilename+\n print os.path.joindirpath,filename