【问题标题】:How can I ignore or remove ".ipynb_checkpoints" in colab?如何在 colab 中忽略或删除“.ipynb_checkpoints”?
【发布时间】:2020-04-14 11:58:26
【问题描述】:

我在 tf.keras 中的代码如下所示。 我想在model_cnn文件夹的每个子目录(component_0,component_1)中检索一个文件(Xscale.npy)。

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 的驱动力是

我的问题是

1) 访问子目录中的文件时如何忽略 .ipynb_checkpoints?

2) 为什么 .ipynb_checkpoints 文件在 colab 磁盘中不可见?

提前致谢, D.-H.

【问题讨论】:

  • 该文件在 GUI 中不可见,因为它是一个点文件,这意味着它默认是隐藏的。也不需要切换破坏东西的目录,只需提供项目的路径......

标签: python google-colaboratory tf.keras os.walk os.path


【解决方案1】:

我遇到了同样的问题。这可能会发生,因为在上传期间,它还上传了 .ipynb_checkpoint 这是一个隐藏文件夹。解决此问题的方法是您可以使用手动删除文件夹

rmdir /content/drive/My Drive/DeepCID/model_cnn/.ipynb_checkpoints 在执行您提到的代码之前的单元格中。

【讨论】:

    【解决方案2】:

    将您的代码更改为以下内容。

    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))
    

    【讨论】:

    • 如果可能的话,你能告诉我你更优雅的方法吗?
    • 添加了使用pathlib的更简洁的方法
    【解决方案3】:

    您可以使用pathlibrglob 以获得更简洁的代码。

    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)
    

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2016-05-02
      • 1970-01-01
      • 2019-07-28
      • 2013-10-18
      相关资源
      最近更新 更多