python open() - 访问被拒绝

时间:2013-04-13 17:40:01

标签: 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()

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

我通过子进程的python文档阅读,但这真的没有帮助我,如果有的话,它让我很困惑。

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

有谁知道如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

您需要提升权限才能在Windows上写入程序文件,不知何故,您的插件没有它们。我会考虑使用另一个目录。

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