在python中,我正在执行os.system('chmod o+w filename.png')
命令,因此我可以使用pngcrush覆盖该文件。
这些是我在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
作为“其他”用户运行,为其启用了写入权限?
谢谢!
答案 0 :(得分:3)
问题在于您执行pngcrush
程序的方式,而不是filename.png
或Python的权限。它只是尝试打开filename.png
输入和输出,这当然是无效的。
给pngcrush
-e
或-d
选项告诉它如何编写输出。请阅读man
以获取更多信息。
答案 1 :(得分:2)
也许pngcrush
不允许您对输入和输出文件使用相同的名称?您是否尝试更改输出文件名?如果是的话,结果是什么?
答案 2 :(得分: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
答案 3 :(得分:0)
也许您应该为输出提供不同的(不存在的)文件名。你有没有在shell中尝试过相同的东西?