Python 无法访问主目录(Jupyter笔记本)中的文件
我正在尝试创建一个简单的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
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")