Невозможно получить доступ к файлу в домашнем каталоге (Jupyter Notebook) - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь создать простой блокнот Jupyter здесь . В моем коде я должен загрузить файл file.txt, помещенный в каталог /data в доме

data/file.txt

код

open('data/file.txt', 'r')

или

open('~/data/file.txt', 'r')

Я получаю ошибку

FileNotFoundError: [Errno 2] Нет такого файла или каталога: '~ / data / file.txt'

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Записные книжки Jupyter всегда запускаются в каталоге, где была запущена записная книжка, поэтому вы должны ссылаться на файл по его относительному пути (./)

Например. Это работает:

with open('./data/file.txt') as f:
    for line in f.readlines():
        print(line.strip())

Итак, использование ./<any_dirpath>/<file> работает на локальной установке jupyter.

Если вы используете binder или какой-либо удаленный сайт, домашний каталог - это не локальный каталог, а удаленный каталог, поэтому, если вы не загрузите файл, с которым работаете, вы не сможете его прочитать.

Вы можете проверить текущий каталог, выполнив:

import os
print(os.getcwd() + "\n")
0 голосов
/ 29 апреля 2018

Вы можете получить доступ к вашему домашнему каталогу, используя функцию os.path.expanduser , чтобы получить имя домашнего каталога.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...