在jupyter中使用课上的代码爬取东西,data文件夹里的out.txt文件里有了爬取的东西,但是jupyter中显示无法找到这个文件的路径,这是为什么

代码如下图所示

img

显示的错误如下
FileNotFoundError Traceback (most recent call last)
in ()
10 date=data.select(".date")
11 click=data.select(".hit.float-right")
---> 12 with open("data/out.txt","a",encoding='utf-8') as f: #a的方式,每循环一次后追加保存内容。
13 for x,m,n in zip(date,title,click):
14 f.write("{}\t{}\t{}\n".format(x.text,m.text,n.text))

FileNotFoundError: [Errno 2] No such file or directory: 'data/out.txt'

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    该问题的可能原因是代码中指定的输出文件路径不正确所致。如果你是在Windows系统中运行该代码,则需要注意路径的斜杠方向应该为反斜杠'\'而不是正斜杠'/'。解决该问题的方法有以下几个方面:

    1. 检查文件路径是否正确

    在代码中打开的文件路径为"data/out.txt",这意味着文件应该在当前目录下的data文件夹中。可以尝试执行以下代码来查看当前工作目录:

    import os
    print(os.getcwd())
    

    如果输出结果与你期望的不同,则说明代码中打开文件时的路径不正确,需要根据实际情况修改。可以使用以下代码来获取运行代码的文件所在目录,并将文件保存在该目录下:

    import os
    current_path=os.path.abspath(".")
    output_path=os.path.join(current_path,"data","out.txt")
    
    with open(output_path,"w")as f:
        date=data.select(".date")
        click=data.select(".hit.float-right")
        for x,m,n in zip(date,title,click):
            f.write("{}\t{}\t{}\n".format(x.text,m.text,n.text))
    

    以上代码将文件保存到了当前工作目录下的data文件夹中。

    1. 检查文件是否被占用

    在运行代码时,有时会出现文件被占用的情况。如果该文件已经被打开或者正在被另一个程序使用,则无法对其进行读写操作。此时需要等待该文件的占用者关闭文件后再进行操作。可以尝试在文件操作前加入以下代码以检查文件是否被占用:

    import os
    output_path=os.path.join(os.getcwd(),"data","out.txt")
    if os.path.isfile(output_path):
        try:
            with open(output_path,"r")as f:
                pass
        except IOError:
            print("File is being used by another process. Please try again later.")
    else:
        with open(output_path,"w")as f:
            date=data.select(".date")
            click=data.select(".hit.float-right")
            for x,m,n in zip(date,title,click):
                f.write("{}\t{}\t{}\n".format(x.text,m.text,n.text))
    

    以上代码在打开文件前检查文件是否存在及是否被占用,如果文件正在被占用,则提示用户稍后再尝试操作。

    1. 检查文件权限

    在某些情况下,如果用户的权限不足以对文件进行读写操作,则可能会出现类似的错误。此时需要检查用户是否具有对该文件的读写权限。可以使用以下代码来检查文件是否具有写权限:

    import os
    output_path=os.path.join(os.getcwd(),"data","out.txt")
    if os.path.isfile(output_path):
        if os.access(output_path,os.W_OK):
            with open(output_path,"w")as f:
                date=data.select(".date")
                click=data.select(".hit.float-right")
                for x,m,n in zip(date,title,click):
                    f.write("{}\t{}\t{}\n".format(x.text,m.text,n.text))
        else:
            print("Permission denied: you do not have write access to this file.")
    else:
        with open(output_path,"w")as f:
            date=data.select(".date")
            click=data.select(".hit.float-right")
            for x,m,n in zip(date,title,click):
                f.write("{}\t{}\t{}\n".format(x.text,m.text,n.text))
    

    以上代码在打开文件前检查用户是否具有对该文件的写权限,如果没有写权限,则提示用户。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

我感觉,应该是您 jupyter 里的路径设置了,您可以检查下。