これは、stackoverflow に関する私の最初の投稿です。何か問題があれば、ぜひ学びたいです。
PythonでCinema 4dのプラグインをプログラミングしています。すべてが Mac で動作しますが、これから説明する内容で Windows で問題が発生します。
レンダーサーバーでレンダリングする場合、プラグインにはサーバーへのパスが必要です。ユーザーにパスを一度入力してもらい、それを .txt ファイルに保存してもらいます。
c4d の場合、プラグインを以下のプラグイン フォルダにドラッグ アンド ドロップして、プラグインをインストールします。
C:/programm files/Maxon/Cinema4D/Plugins/NewPluginGoesHere
すべてをきれいに保つために、プラグイン フォルダーにも pathToServer.txt (パスを含む 1 行のみを格納するテキスト ファイル) が必要です。プラグインを上記のフォルダーにインストール (ドロップ) すると、.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ドキュメントを読みましたが、それは本当に私をまったく助けませんでした。どちらかといえば、混乱させました。
上記のディレクトリのプラグイン フォルダーに直接保存する権限を付与するには、コード エディターを管理者モードで実行する必要があることに気付きました。「program files」フォルダ内のファイルが何らかの形で保護されているようです。また、このプラグインは複数の異なるコンピューター (Mac または Windows) にインストールされるため、たとえばプログラム ファイル フォルダーのアクセス許可を変更することはできません。最終的には、ドラッグ アンド ドロップするだけでインストールできます。
誰もそれを達成する方法を知っていますか?