比如判断一个url是否以ftp或http开头。
实际案例:
某文件系统下有一系列文件:
aa.c
bb.py
cc.java
dd.sh
ee.cpp
...
编写程序给其中所有.sh文件和.py文件加上用户可执行权限。
解决方案:
使用字符串的startswith()和endswith()方法,注意多个匹配时参数使用元组。
知识储备:
# Return a list containing the names of the files in the directory.
os.listdir('.')
# a.endswith() 接收一个字符串或元组参数,判断原字符串a是否以参数b结尾
s = 'g.py'
s.endswith(('.sh','.py')) # True
s.endswith('.sh') # True
os.stat(file) # 查看一个文件的状态
os.stat(file).st_mode # 33206 一个八进制数
oct(os.stat(file).st_mode) # 0o100666 ,后三位代表操作权限
stat.S_IXUSR # 64 用户执行权限
os.stat(file).st_mode | stat.S_IXUSR # 或运算,为一个文件增加用户执行权限
解决方案:
import os,stat
# 筛选符合条件的文件
files = [name for name in os.listdir('.') if name.endswith(('.sh','.py'))]
for file in files:
# 为一个文件增加用户执行权限
os.chmod(file,os.stat(file).st_mode | stat.S_IXUSR)