我的权限设置正确吗?(python)

1 投票
4 回答
761 浏览
提问于 2025-04-16 04:31

在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 手册。

撰写回答