2013-04-13 208 views
4

這是我在stackoverflow上的第一篇文章,所以如果有些錯誤,我很想學!python open() - 訪問被拒絕

我正在用python爲Cinema 4d編程插件。一切工作在Mac上,但我在Windows上遇到了問題,我將解釋。

如果在渲染服務器上渲染,該插件需要一個服務器路徑。我希望用戶輸入一次路徑,然後將其存儲在.txt文件中。

爲C4D,插件正在安裝,通過draging和 - 滴速插件插入插件文件夾在例如:

C:/ PROGRAMM文件/ Maxon公司/ Cinema4D在/插件/ NewPluginGoesHere

在爲了保持一切都很乾淨,我希望pathToServer.txt(文本文件只能在路徑中存儲一行)插入到插件文件夾中。將插件安裝(丟棄)到所述文件夾時,.txt文件已經存在 - >不是由插件創建的。

這裏談到的問題:

我打開並寫入文件兼容Mac

pathFile = open(pathToPathFile, "w") 
pathFile.write(pathToServerFolder) 

工作正常,但在Windows拋出

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

我很不熟悉使用python這樣的任務(如文件管理)。

然後我嘗試了以下內容:

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

哪個不給我一個錯誤,但它也似乎並沒有做任何事情:/

我讀throung子的Python文檔,但是如果有的話,那真的沒有幫助我,它讓我困惑。

我注意到,我還需要在管理模式下運行我的代碼編輯器,以便它有權直接保存到所述目錄中的插件文件夾中。看起來'程序文件'文件夾中的文件受到某種程度的保護。另外,這個插件將被安裝在幾個不同的計算機上,無論是mac還是windows,並且因此改變例如programm files文件夾的權限不是一個選項。最後的拖放應該是安裝它所需要做的一切。

有誰知道如何做到這一點?

+0

這實際上是一個不錯的第一篇文章。您向我們展示了您的代碼,您向我們提供了您的確切錯誤消息,並且您還解釋了有關可能出現問題的原因以及爲什麼特定解決方案無法正常工作的想法。不錯的工作! –

+0

不知道爲什麼你認爲子過程會有所幫助,但... –

回答

2

您需要提升權限才能在Windows上寫入Program Files,不知何故,您的插件沒有它們。我會考慮只使用另一個目錄。

許多渲染解決方案需要你指定一個目錄,所以我認爲這不是一個大問題。例如,modo 501和601(假設爲701),例如需要一個目錄用於數據共享。 Maya的V-Ray或多或少要求您將場景文件以分佈模式放置在共享驅動器上。

+0

答案快了!謝謝 - 請問哪個文件夾通常用於這樣的事情?或在哪裏創建一個?謝謝 – Amadeo

+0

我不知道大製片廠是如何做到的,他們可能是靠自己解決的。但網絡驅動器很常見。 modo需要你進入首選項,並指定一個共享文件夾放置場景文件的地方。可悲的是我沒有Cinema 4D的經驗,所以我不知道它是如何做到的。 Maya的V-Ray需要能夠訪問你的紋理和東西,這基本上意味着每個渲染節點都可以訪問的文件夾,而不是網絡文件夾。 – Skurmedel

+0

另外,我不確定你想要存儲什麼。在你的情況下,它似乎只是插件設置,我的答案更多地是關於場景文件。但也許這也是問題的一部分? – Skurmedel