Python 无法访问主目录(Jupyter笔记本)中的文件

Python 无法访问主目录(Jupyter笔记本)中的文件,python,jupyter-notebook,Python,Jupyter Notebook,我正在尝试创建一个简单的Jupyter笔记本。在我的代码中,我必须加载一个文件file.txt,该文件位于主页的/data目录中 data/file.txt 代码 或 我犯了一个错误 FileNotFoundError:[Errno 2]没有这样的文件或目录:“~/data/file.txt” 您可以使用获取主目录名称的函数访问主目录 import os import os.path # Create data directory try: os.makedirs(os.path.j

我正在尝试创建一个简单的Jupyter笔记本。在我的代码中,我必须加载一个文件
file.txt
,该文件位于主页的
/data
目录中

data/file.txt
代码

我犯了一个错误

FileNotFoundError:[Errno 2]没有这样的文件或目录:“~/data/file.txt”


您可以使用获取主目录名称的函数访问主目录

import os
import os.path

# Create data directory
try:
    os.makedirs(os.path.join(os.path.expanduser('~'), 'data'))
except OSError:
    pass

# Write to file
with open(os.path.join(os.path.expanduser('~'), 'data/file.txt'), 'w') as f:
    f.write('Hello world')

# Read from file    
with open(os.path.join(os.path.expanduser('~'), 'data/file.txt')) as f:
    print(f.read())

Hello world

默认情况下,Jupyter笔记本始终在笔记本启动的目录下运行,因此您应该通过文件的相对路径(
/
)引用该文件

这项工作:

with open('./data/file.txt') as f:
    for line in f.readlines():
        print(line.strip())
因此,使用
/
可以在本地jupyter安装上工作

如果您使用的是binder或任何远程站点,则主目录不是本地目录,而是远程目录,因此除非您上载正在使用的文件,否则您将无法读取它

您可以通过运行以下命令来检查当前目录:

import os
print(os.getcwd() + "\n")

@蛇怪B我怎样才能获得
myusername
。我尝试从url获取用户名,但它不起作用<代码>https://hub.mybinder.org/user/ipython-ipython-in-depth-xxxx/notebooks/binder/Index.ipynb#。路径
/home/ipython-ipython-depth-xxxx/data/file.txt
我注意到
Index.ipynb
binder
目录中,所以我把
data
目录移到
binder
目录中,它起作用了。我有点困惑-不管你在哪个pwd,都不应该给你你你的主路径吗?我在运行Jupyter笔记本的MacOS上也有同样的问题,其中/Users/me/可访问,但~/filename不可访问。@user391339这不是Jupyter问题。根据,Python需要相对或绝对文件路径,并且它不会将tilde~扩展到用户主页的绝对路径。为此,您应该使用:
importos
,然后使用
os.path.expanduser(“~”)
with open('./data/file.txt') as f:
    for line in f.readlines():
        print(line.strip())
import os
print(os.getcwd() + "\n")