文件爬虫OSError

时间:2012-10-21 23:58:32

标签: python recursion python-3.x

我想让它以递归方式调用手动输入文件中列出的下一个文件。这是文件中列出的第一个单词。

当前的错误消息是:

OSError: [Errno 22] Invalid argument: 'file1.txt\n'.

这是我目前的代码:

import os
def crawl(fname):
infile = open(fname, 'r')
if os.stat(fname)[6]==0:
    return "Visiting {}".format(fname)
    infile.close()
else:
    print ("Visiting {}".format(fname))
    lines = infile.read().splitlines()
    nextfile = lines[0].strip()
    for line in lines:
        crawl(nextfile)

2 个答案:

答案 0 :(得分:1)

我很确定问题是你在第一个文件中读取的文件名末尾有一个换行符。您可以使用strip方法删除换行符轻松修复它:

nextfile = lines[0].strip()

答案 1 :(得分:1)

尝试:

import os
def crawl(fname):
    with open(fname, "r") as infile:
        print("Visiting {}".format(fname))
        if os.stat(fname).st_size:
            lines = infile.read().splitlines()
            for line in lines:
                crawl(line)