Jupyter Notebook无法访问主目录下文件问题求助
解决Jupyter Notebook中读取~/data/file.txt的FileNotFoundError问题
嗨,这个问题我之前也碰到过!核心原因很简单:Python的open()函数并不认识shell里的~符号——这个波浪号是bash等shell用来指代用户主目录的语法,Python本身没法直接解析它,所以你直接写~/data/file.txt的时候,Python会把它当成一个普通的文件名,自然找不到对应的文件。
下面给你几个靠谱的解决办法:
方法1:用os.path.expanduser()解析波浪号
这是比较经典的处理方式,通过os模块的函数把~转换成真实的主目录路径:
import os # 展开波浪号为绝对路径 file_path = os.path.expanduser('~/data/file.txt') # 安全读取文件(用with语句会自动关闭文件) with open(file_path, 'r') as f: content = f.read()
这个函数会自动把~替换成你的用户主目录绝对路径,比如Linux/macOS下的/home/你的用户名/data/file.txt,或者Windows下的C:\Users\你的用户名\data\file.txt。
方法2:用pathlib模块(Python3.4+推荐)
如果你用的是较新的Python版本,推荐用更现代的pathlib来处理路径,语法更直观:
from pathlib import Path # 获取主目录并拼接路径 file_path = Path.home() / 'data' / 'file.txt' with open(file_path, 'r') as f: content = f.read()
Path.home()会直接返回你的用户主目录路径,然后用/就可以像在shell里一样拼接子目录和文件名,非常方便。
方法3:直接使用绝对路径
如果你明确知道自己的主目录绝对路径,也可以直接写全路径,比如:
# Linux/macOS示例 with open('/home/your_username/data/file.txt', 'r') as f: content = f.read() # Windows示例 with open('C:\\Users\\your_username\\data\\file.txt', 'r') as f: content = f.read()
不过这种方法不够通用,换个环境就需要修改路径,不如前两种灵活。
额外提示:检查Jupyter的当前工作目录
你用open('data/file.txt', 'r')失败,也可能是因为Jupyter的当前工作目录不是你的主目录。可以先运行下面的代码查看当前目录:
import os print(os.getcwd())
如果输出不是你的主目录,要么切换工作目录:
os.chdir(os.path.expanduser('~'))
之后再用open('data/file.txt', 'r')就可以了;要么直接用前面的绝对路径方法。
内容的提问来源于stack exchange,提问作者arush1836
相关产品推荐
相关产品推荐

