【问题标题】:PermissionError: [Errno 13] Permission denied when doing input_data.read_data_sets(..)PermissionError: [Errno 13] 执行 input_data.read_data_sets(..) 时权限被拒绝
【发布时间】:2017-04-13 11:41:25
【问题描述】:

我 pip 安装了 Tensor Flow,所以我没有 tensorflow.examples,所以我从 GitHub 获得了源 input_data。我怎么会收到以下错误。

PermissionError: [Errno 13] Permission denied: 'C:\Users\Nikhil\AppData\Local\Temp\tmp5gr8f26y'

这是我的代码。

import input_data
mnist = input_data.read_data_sets("/MNIST_data/", one_hot = True)

我该如何解决这个问题?还有另一个线程处理完全相同的问题,但该解决方案并没有解决我的问题。我现在该怎么办? input_data.py 文件位于我的项目目录中。我的项目目录是这样的。

tensor_flow
          |
          tf.py
          input_data.py

我已经尝试并用尽了 Stack Overflow 中描述的所有方法。请勿重复。

runfile('C:/Users/Nikhil/Desktop/Tensor Flow/tensf.py', wdir='C:/Users/Nikhil/Desktop/Tensor Flow') Traceback(最近一次调用最后一次):

文件“”,第 1 行,在 runfile('C:/Users/Nikhil/Desktop/Tensor Flow/tensf.py', wdir='C:/Users/Nikhil/Desktop/Tensor Flow')

文件“C:\Users\Nikhil\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 866 行,在运行文件中 execfile(文件名,命名空间)

文件“C:\Users\Nikhil\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 102 行,在 execfile exec(编译(f.read(),文件名,'exec'),命名空间)

文件“C:/Users/Nikhil/Desktop/Tensor Flow/tensf.py”,第 26 行,在 mnist = input_data.read_data_sets("MNIST_data/", one_hot = True)

文件“C:\Users\Nikhil\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\mnist.py”,第 211 行,在 read_data_sets SOURCE_URL + TRAIN_IMAGES)

文件“C:\Users\Nikhil\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\base.py”,第 141 行,在 maybe_download urllib.request.urlretrieve(source_url, temp_file_name)

文件“C:\Users\Nikhil\Anaconda3\lib\urllib\request.py”,第 198 行,在 urlretrieve 中 tfp = 打开(文件名,'wb')

PermissionError: [Errno 13] Permission denied: 'C:\Users\Nikhil\AppData\Local\Temp\tmpry0jmpiu'

【问题讨论】:

  • @MohammadYusufGhazi 这与此无关......
  • 是完整的堆栈跟踪吗?
  • @MohammadYusufGhazi 没有。完整的堆栈跟踪只指向 mnist = input_data.read_data_sets(...)
  • 在这两个位置提取这些文件。使用 7zip。然后运行你的程序。

标签: python tensorflow


【解决方案1】:

这是 read_data_sets() 函数:

def read_data_sets(train_dir,
                   fake_data=False,
                   one_hot=False,
                   dtype=dtypes.float32,
                   reshape=True,
                   validation_size=5000):

在这个函数中,这段代码将运行:

TRAIN_IMAGES = 'train-images-idx3-ubyte.gz'
TRAIN_LABELS = 'train-labels-idx1-ubyte.gz'
TEST_IMAGES = 't10k-images-idx3-ubyte.gz'
TEST_LABELS = 't10k-labels-idx1-ubyte.gz'

local_file = base.maybe_download(TRAIN_IMAGES, train_dir,
                                 SOURCE_URL + TRAIN_IMAGES)
with open(local_file, 'rb') as f:
  train_images = extract_images(f)

maybe_download() 正在下载您的 Windows 临时目录中的文件,然后尝试访问它。

但由于权限受限或其他原因,无法读取该文件。

所以尝试处理我猜的文件权限。我在 linux 上,或者会为你测试它。

您可以做一个解决方法,手动将数据下载到当前工作文件夹。您可以从这里下载:

TRAIN_IMAGES = 'http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz'
TRAIN_LABELS = 'http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz'
TEST_IMAGES = 'http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz'
TEST_LABELS = 'http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz'

【讨论】:

  • 所以我应该将这个函数添加到我的代码中以使其工作?
  • 您是否尝试将其作为参数:“MNIST_data/”删除前面的“/”?
  • 它不起作用。我将在我的编辑中为您提供完整的堆栈回溯。请参阅编辑。
  • 还有其他方法可以导入数据集吗?
  • 理想情况下,数据应该是本地的。但由于它在当前工作目录中找不到数据,因此正在尝试下载它。
【解决方案2】:

好的,这样做:

在这个位置创建一个目录“MNIST_data”:

tensorflow/contrib/learn/python/learn/datasets/

复制并提取该文件夹中所有下载的文件。这应该最有可能解决您的问题。

我猜错误是python在下载后无法打开.gz文件。

【讨论】:

  • 我收到 EOFError:压缩文件在到达流结束标记之前结束。即使我将提取的文件粘贴到那里,它仍在尝试下载。现在该怎么办?
  • 您可以尝试的最后也是最后一件事:从该文件夹中删除提取的文件并复制压缩 (.gz) 文件。
  • 如果它不起作用,请转到 StackOverflow 聊天室并尝试找到可以解决此问题的人。或者去 github 提出一个指向这个问题的票。
猜你喜欢
  • 2015-07-17
  • 2016-07-25
  • 2018-11-18
  • 2020-07-01
  • 2016-11-12
  • 2019-11-09
  • 2020-06-06
  • 2021-11-11
  • 2020-02-27
相关资源
最近更新 更多