【问题标题】:python open() - access deniedpython open() - 访问被拒绝
【发布时间】:2013-04-13 17:40:00
【问题描述】:

这是我在 stackoverflow 上的第一篇文章,所以如果有问题我很想学习!

我正在使用 python 为 Cinema 4d 编写插件。一切都可以在 Mac 上运行,但我在 Windows 上遇到了我要解释的问题。

插件需要一个服务器路径,以防在渲染服务器上渲染。我希望用户输入一次路径,然后将其存储在 .txt 文件中。

对于 c4d,正在安装插件,通过将插件拖放到插件文件夹中,例如:

C:/programm files/Maxon/Cinema4D/Plugins/NewPluginGoesHere

为了保持一切整洁,我还希望在插件文件夹中添加 pathToServer.txt(仅存储一行与路径的文本文件)。将插件安装(放置)到所述文件夹时,.txt 文件已经存在 -> 不是由插件创建的。

问题来了:

我用

打开并写入文件
pathFile = open(pathToPathFile, "w")
pathFile.write(pathToServerFolder)

在 mac 上工作正常,但会抛出

IOError: [Errno 13] Permission denied: 'C:\\Program Files\\MAXON\\CINEMA 4D R14\\plugins\\MultiLayerRender\\Renderserverpath.txt'

在 Windows 上。

我对使用 python 执行此类任务(如文件管理)非常缺乏经验。

然后我尝试了以下方法:

pathFile = subprocess.Popen(pathToPathFile, stdin = subprocess.PIPE, stdout = subprocess.PIPE, shell = True)
pathFile.communicate(input = pathToServerFolder)
pathFile.stdin.close()

这不会给我一个错误,但它似乎也没有做任何事情:/

我阅读了 subprocess 的 python 文档,但这真的对我没有任何帮助,如果有的话,它让我感到困惑。

我注意到,我还需要在管理员模式下运行我的代码编辑器,以便它有权直接保存到所述目录中的插件文件夹中。似乎“程序文件”文件夹中的文件受到某种保护。此外,此插件将安装在几台不同的计算机上,无论是 mac 还是 windows,因此不能更改例如 programm 文件夹的权限。最后,只需拖放即可安装它。

有人知道如何实现吗?

【问题讨论】:

  • 这实际上是一篇不错的第一篇文章。您向我们展示了您的代码,您向我们提供了确切的错误信息,您还解释了您对问题可能是什么以及为什么特定解决方案不起作用的想法。干得好!
  • 不知道为什么您认为子流程会有所帮助...

标签: python file-io stdin


【解决方案1】:

您需要提升权限才能写入 Windows 上的 Program Files,不知何故您的插件没有这些权限。我会考虑只使用另一个目录。

许多渲染解决方案要求您在某个地方指定一个目录,所以我认为这不是一个大问题。 modo 501 和 601(大概是 701),例如需要一个目录来共享数据。 V-Ray for Maya 或多或少要求您以分布式模式将场景文件放在共享驱动器上。

【讨论】:

  • 答案来得很快!谢谢 - 我可以问一下哪个文件夹通常用于这样的事情吗?或者在哪里创建一个?谢谢
  • 我不知道大工作室是怎么做到的,他们可能会自己解决。但是网络驱动器很常见。 modo 需要您进入 Preferences 并指定一个共享文件夹,它将放置场景文件。遗憾的是我没有使用 Cinema 4D 的经验,所以我不知道它是如何做到的。 V-Ray for Maya 需要能够访问您的纹理和东西,这基本上意味着每个渲染节点都可以访问的文件夹,因此是网络文件夹。
  • 另外,我不确定您要存储什么。在你的情况下,它似乎只是插件设置,我的回答更多的是关于场景文件。但也许这也是问题的一部分?
  • 对不起,回答晚了,这只是一个设置/路径。应用程序数据中有一个文件夹,来自 c4d,我想我会把它存储在那里 ;) 感谢您的快速回答!
猜你喜欢
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 2013-06-15
  • 2015-10-03
  • 1970-01-01
相关资源
最近更新 更多