2010-09-23 78 views
1

在python中,我正在執行os.system('chmod o+w filename.png')命令,因此我可以用pngcrush覆蓋該文件。我的權限設置是否正確? (python)

這些權限後,我在python設置它們:

-rw-rw-rw- 1 me users 925 Sep 20 11:25 filename.png 

然後我嘗試:

os.system('pngcrush filename.png filename.png') 

這是應該覆蓋該文件,但我得到:

Cannot overwrite input file filename.png 

可能是什麼問題?是不是pngcrush作爲「其他」用戶運行,是否啓用了寫入權限?

謝謝!

回答

3

問題出在您執行pngcrush程序的方式,而不是filename.png或Python的權限。它只是試圖打開filename.png的輸入和輸出,這當然是無效的。

pngcrush或者-e-d選項告訴它如何寫輸出。請閱讀man瞭解更多信息。

2

也許pngcrush是不是讓你對輸入和輸出文件使用相同的名字?你有沒有試過改變輸出文件名?如果是這樣,結果如何?

0

也許你應該爲輸出提供一個不同的(不存在的)文件名。你有沒有嘗試過一樣的外殼?

2

順便說一句(不相關的輸入和輸出文件是相同的問題),您可以更改使用os.chmod一個文件,這比運行chmod更有效的方式:

import os 
import stat 

path = "filename.png" 
mode = os.stat(path).st_mode  # get current mode 
newmode = mode | stat.S_IWOTH # set the 'others can write' bit 
os.chmod(path, newmode)   # set new mode 
+0

非常很酷,謝謝! – ash 2010-09-24 18:25:09