python open() - 访问被拒绝

标签 python file-io stdin

这是我在 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,因此无法更改对例如程序文件文件夹的权限。最后,只需拖放即可安装。

有人知道如何实现吗?

最佳答案

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

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

关于python open() - 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990843/

相关文章:

python - DynamoDB 更新多个值

javascript - 转换为文件对象时的 Base64 图像有一个奇怪的名字

c - 输入使用 gets 不起作用,但使用 scanf

c - 重定向标准输入 - C

Python:诅咒和默认的黑色

python - 如何获取python导入树

Python Pandas 从另一个观察结果中输入字符串值

java - 从 java 应用程序中打开 byte[] 作为文件,用户不应该能够编辑该文件

c++ - C++输出到文件不正确?

c - 无法从 C 中的 stdin/STDIN_FILENO 读取输入?