Skip to main content
 首页 » 编程设计

python之输出到文件时遇到问题

2025年05月04日13lautakyan007

我这里有这个简单的代码

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 for f in filenames] 时,您正在循环中重新绑定(bind) f。当您到达调用 f.write 的位置时,f 是 filenames 的最后一个成员,因此它是一个字符串。将外部 f 重命名为 log 或 output 之类的名称,或者更好的是,摆脱无用的列表理解:

for file name in filenames: 

足够了。

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