#python #linux #shell
Вопрос:
У меня есть helloworld.sh
файл в моем Linux. Когда я пытаюсь просто запустить его с помощью скрипта python subprocess.call('./hello.sh')
, он показывает результат permission denied
.
Я пробовал этот метод, найденный в Интернете, но он не работает os.chmod("hello.sh", 0o664)
. Я хочу изменить разрешение файла с помощью скрипта python на chmod x
.
Пожалуйста, объясните мне синтаксис. Я также искал в Интернете, но это не работает. У меня Linux на базе Debian.
Комментарии:
1.
os.chmod("hello.sh", 0o755)
чтобы предоставить права на исполнение. Вы создаете сценарий?2. нет, у меня есть скрипт в файле .sh, я выполняю его с помощью скрипта python, но при выполнении он выдает ошибку «Отказано в разрешении».
3. 6-это r w, а не r w x; а 4-это только r. Почему вы думаете, что 644 должно быть эквивалентно результату подачи заявки
x
?
Ответ №1:
Это должно добавить исполняемые разрешения user
group
и other
независимо от платформы , сохраняя при этом любые исходные разрешения. У меня нет машины с Windows для тестирования, но в документации Path.chmod()
говорится, что она также должна поддерживаться в Windows, хотя все биты, кроме бита, доступного только для чтения, будут игнорироваться.
from pathlib import Path import stat path = Path("/path/to/file") original_st_mode = path.st_mode path.chmod(original_st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)