Как я могу игнорировать или удалить «.ipynb_checkpoints» в колабе? - PullRequest
0 голосов
/ 14 апреля 2020

Мой код в tf.keras приведен ниже. Я хочу получить файл (Xscale.npy) в каждом подкаталоге (component_0, component_1) папки model_cnn.

root_dir = '/content/drive/My Drive/DeepCID/model_cnn'

    i=0
    for (root, dirs, files) in os.walk(root_dir):
      for d in dirs:
        print(dirs) 
        os.chdir(os.path.join(root, d))
        print(os.getcwd())
        datafile3 = './Xscale.npy'
        Xscale = np.load(datafile3)

Сообщение об ошибке:

['.ipynb_checkpoints', 'component_0', 'component_1']
/content/drive/My Drive/DeepCID/model_cnn/.ipynb_checkpoints
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-1-862f78aebef9> in <module>()
     57     print(os.getcwd())
     58     datafile3 = './Xscale.npy'
---> 59     Xscale = np.load(datafile3)
     60     Xtest = (Xtest0 - Xscale[0])/Xscale[1]
     61 

/usr/local/lib/python3.6/dist-packages/numpy/lib/npyio.py in load(file, mmap_mode, allow_pickle, fix_imports, encoding)
    426         own_fid = False
    427     else:
--> 428         fid = open(os_fspath(file), "rb")
    429         own_fid = True
    430 

FileNotFoundError: [Errno 2] No such file or directory: './Xscale.npy'

Я распознаю, что ' .ipynb_checkpoints 'это проблема. Но когда я смотрю в папку, там нет файла или папки .ipynb_checkpoints.

Мой диск в Colab - enter image description here

Мои вопросы

1) Как можно игнорировать .ipynb_checkpoints при доступе к файлу в подкаталогах?

2) Почему файл .ipynb_checkpoints не виден на диске colab?

Заранее спасибо, D.- H.

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Измените свой код на следующий.

1) Проверьте, является ли это скрытым файлом

2) Не используйте os.chdir, поскольку в этом нет необходимости.

root_dir = '/content/drive/My Drive/DeepCID/model_cnn'
datafile3 = 'Xscale.npy'

i=0
for (root, dirs, files) in os.walk(root_dir):
    for d in dirs:
        if not d.startswith('.'):
            dir_path = os.path.join(root, d)
            file_path = os.path.join(dir_path, datafile3)
            Xscale = np.load(file_path)

Существуют более элегантные способы сделать это с точки зрения получения абсолютных путей к файлам, но я хотел минимизировать количество измененного кода.

Альтернативный метод использует pathlib.

from pathlib import Path

root_dir = '/content/drive/My Drive/DeepCID/model_cnn'
datafile3 = 'Xscale.npy'

i=0
for (root, dirs, files) in os.walk(root_dir):
    for d in dirs:
        if not d.startswith('.'):
            fp = Path(root) / d / datafile3
            Xscale = np.load(str(fp))
0 голосов
/ 15 апреля 2020

Вы можете использовать pathlib с rglob для кода уборщика.

from pathlib import Path

root_dir = '/content/drive/My Drive/DeepCID/model_cnn'
root = Path(root_dir)
# parent dir must not start with dot
for datafile in root.rglob('[!.]*/Xscale.npy'):
  print(datafile)  # or np.load(datafile)
...