Правильно ли установлены мои разрешения?(Python) - PullRequest
1 голос
/ 23 сентября 2010

В python я делаю команду os.system('chmod o+w filename.png'), чтобы я мог перезаписать файл с помощью pngcrush .

Это разрешения после того, как я установил их в python:1007 *

Затем я пытаюсь:

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

, который должен перезаписать файл, но я получаю:

Cannot overwrite input file filename.png

В чем может быть проблема?Разве pngcrush не запускается как «другой» пользователь, для которого включены разрешения на запись?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 23 сентября 2010

Проблема связана с тем, как вы запускаете программу pngcrush, а не с разрешениями filename.png или Python. Он просто пытается открыть filename.png как для ввода, так и для вывода, что, конечно, недопустимо.

Дайте pngcrush либо -e, либо -d, чтобы указать, как записывать вывод. Прочитайте его man для получения дополнительной информации.

2 голосов
/ 23 сентября 2010

Помимо этого (не относится к проблеме одинаковых входных и выходных файлов), вы можете изменить режим файла, используя 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 голосов
/ 23 сентября 2010

Возможно, pngcrush не позволяет использовать одно и то же имя для входных и выходных файлов?Вы пытались изменить имя выходного файла?Если да, каковы были результаты?

0 голосов
/ 23 сентября 2010

Возможно, вы должны указать другое (несуществующее) имя файла для вывода.Вы пробовали то же самое в оболочке?

...