读取文件时IOError的帮助

2 投票
1 回答
846 浏览
提问于 2025-04-16 02:13
for subdir, dirs, files in os.walk(crawlFolder):
    for file in files:
         print os.getcwd()
         f=open(file,'r')
         lines=f.readlines()
         writeFile.write(lines)
         f.close()
writeFile.close()   

我遇到了一个错误,错误信息是:

IOError: [Errno 2] 没有这样的文件或目录

根据我上面的部分Python代码:

print os.getcwd() --> C:\search engine\taxonomy

但是,文件实际上是在这个目录下 "C:\search engine\taxonomy\testFolder"

我知道这个错误是因为代码在当前目录下运行,而我需要把目录testFolder和文件结合起来。有人能帮我修改一下代码吗?谢谢!

1 个回答

3

这个 subdir 变量告诉你从 crawlFolder 到包含 file 的文件夹的路径,所以你只需要把 os.path.join(crawlFolder, subdir, file) 传给 open,而不是直接用 file。就像这样:

for subdir, dirs, files in os.walk(crawlFolder):
    for file in files:
         print os.getcwd()
         f=open(os.path.join(crawlFolder, subdir, file),'r')
         lines=f.readlines()
         writeFile.write(lines)
         f.close()
writeFile.close()

顺便说一下,这是一种更有效的方式来把一个文件复制到另一个文件:

for subdir, dirs, files in os.walk(crawlFolder):
    for file in files:
         print os.getcwd()
         f=open(os.path.join(crawlFolder, subdir, file),'r')
         writeFile.writelines(f)
         f.close()
writeFile.close()

[编辑:忍不住想要简化一下代码:

for subdir, dirs, files in os.walk(crawlFolder):
    for file in files:
         writeFile.writelines(open(os.path.join(crawlFolder, subdir, file)))
writeFile.close()

]

撰写回答