这是我在 stackoverflow 上的第一篇文章,所以如果有问题我很想学习!
我正在用 python 为 Cinema 4d 编写插件。一切都在 Mac 上运行,但我在 Windows 上遇到了我要解释的问题。
如果在渲染服务器上渲染,插件需要一个服务器路径。我希望用户输入一次路径,然后将其存储在 .txt 文件中。
对于 c4d,正在安装插件,方法是将插件拖放到插件文件夹中,例如:
C:/programm 文件/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 文件夹的权限。最后,只需拖放即可安装它。
有谁知道如何实现这一目标?