Linux环境下如何通过Python脚本为文件设置chmod+x可执行权限
问题原因与解决方法
你之前使用的os.chmod("hello.sh", 0o664)无效,是因为0o664对应的权限为rw-rw-r--,没有为任何用户分配执行权限,自然无法直接运行脚本。要实现chmod +x的效果,有两种常用实现方式:
方法1:使用os.chmod原生API
直接设置完整权限(等效chmod 755 hello.sh,最常用)
import os # 755对应权限rwxr-xr-x:所有者可读可写可执行,组和其他用户可读可执行 os.chmod("hello.sh", 0o755)
保留原有权限仅追加执行位(等效chmod +x hello.sh,不会修改原有读写权限)
import os import stat # 分别给所有者、组、其他用户追加执行权限 current_mode = os.stat("hello.sh").st_mode os.chmod("hello.sh", current_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
方法2:通过subprocess直接调用chmod命令
如果你更习惯直接使用shell命令的写法,也可以直接调用系统chmod:
import subprocess # 等效命令行执行chmod +x hello.sh subprocess.run(["chmod", "+x", "hello.sh"], check=True)
注意事项
- 执行Python脚本的用户需要拥有
hello.sh文件的权限修改权限,一般为文件所有者或者root用户 - 要确认操作的文件路径正确,如果脚本不在Python进程的当前工作目录下,建议传入绝对路径避免出错
- 权限设置完成后再执行
subprocess.call('./hello.sh')即可正常运行
内容的提问来源于stack exchange,提问作者Hassan Turi
相关产品推荐
相关产品推荐

