我的权限设置正确吗?(python)
在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
不是以“其他”用户的身份运行吗?而我已经给这个用户开启了写权限?
谢谢!
4 个回答
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
2
可能是因为 pngcrush
不允许你把输入文件和输出文件用同一个名字?你试过换一个输出文件的名字吗?如果试过,结果怎么样?
3
问题出在你执行 pngcrush
程序的方式上,而不是 filename.png
的权限或 Python 的问题。它试图同时打开 filename.png
作为输入和输出,这样做当然是不对的。
你需要给 pngcrush
加上 -e
或 -d
选项,告诉它该如何写输出。想了解更多信息,可以查看它的 man
手册。