2010-09-23 72 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