例如,某文件系统目录下有一系列文件:

quicksort.c
graph.py
heap.java
install.sh
stack.app

要求:给其中所有的.sh.py文件加上用户可执行权限。

解决方案:

使用字符串的startswith()endswith()方法,多个匹配时参数使用元组。


  • 对于字符串的startswith()endswith()方法:

字符串的startswith()方法表示以指定字符串开头,匹配到则返回True,否则返回False;

字符串的endswith()方法表示以指定字符串结尾,匹配到则返回True,否则返回False。

  • 对于os.listdir()方法:
os.listdir(path)

os.listdir()方法用于返回指定目录中包含的文件或目录的名字的列表,该列表以字母顺序。

  • 对于os.stat()方法:
os.stat(path, dir_fd, follow_symlinks)

os.stat()方法在给定路径上执行一个stat系统调用,用来返回相关文件的系统状态信息。path表示待检查的路径。

  • 对于os.chmod()方法:
os.chmod(path, mode, dir_fd, follow_symlinks)

os.chmod()方法用于更改文件或目录的权限。path表示要修改的路径或文件名;mode表示要修改的属性。

  • 对于stat.S_IXUSR属性:

stat.S_IXUSR表示拥有者具有执行权限0o100。

类似的stat.S_IRUSR表示拥有者具有读权限0o400;stat.S_IWUSR表示拥有者具有写权限0o200;stat.S_IRWXU表示拥有者有全部权限(权限掩码)0o700;stat.S_IXGRP表示组用户有执行权限0o010;stat.S_IXOTH表示其他用户有执行权0o001。


  • 方案示例:
import osimport statfor fn in os.listdir('.'):             #文件目录路径
    if fn.endswith(('.py', '.sh')):
        fs = os.stat(fn)                #读取文件状态
        os.chmod(fn, fs.st_mode | stat.S_IXUSR)             # |表示或操作