方法一:使用正则表达式的^和$实现
‘^000‘:表示,只匹配字符串的开头,若开头是 ‘000‘ ,则返回 [‘000‘] ;
‘000$‘:表示,只匹配字符串的结尾,若结尾是 ‘000‘ ,则返回 [‘000‘] ;
#弊端:一次只能匹配一种能,如首/尾是000,而不能同时判断000/111/222等多种情况;
方法二:使用字符串的str.startswith()和str.endswith()方法,返回True/False
#多钟情况进行匹配时,参数使用元组
list_1 = ‘00100100100‘ #一、判断字符串首位是否是00 print(list_1.startswith(‘00‘)) #输出:True print(list_1.endswith(‘00‘)) #输出:True #二、判断字符串list_1的首位字符是否是00或者001 #多个条件需要封装成元组: (‘00‘, ‘001‘),此处只能是元组,不能是列表; print(list_1.startswith((‘00‘, ‘001‘))) #输出:True print(list_1.endswith((‘00‘, ‘001‘))) #输出:True
案例:编写程序给文件夹中所有的.sh文件和.py文件,加上用户可执行权限
#什么是用户可执行权限?
#一种权限对应一种掩码,什么是掩码?
import os, stat #os模块:系统调用模块 #stat模块:与文件状态相关 #读取某文件夹下所有文件的文件名,以列表形式返回:[‘文件名1‘, ‘文件名2‘] name_1 = os.listdir(‘文件路径‘) name_2 = [x for x in name_1 if x.endswith((‘.py‘, ‘.sh‘))] #查看文件状态,可获取文件各种属性 a = os.stat(‘文件名‘) #查看文件的其中一个属性,st_mode为文件的一个权限属性 #a1是一个十进制数,若想更直观的通过数值知道文件属性,可将此十进制数转换为8进制数; #为什么八进制数更能看出文件属性?? a1 = os.stat(‘文件名‘).st_mode #修改文件权限:先找到‘用户执行权限‘所对应的掩码,将此掩码与a1取或 #获取文件掩码 a2 = stat.S_IXUSR #使用os模块下的chmod()方法改变文件权限,即两种掩码取或 os.chmod(‘文件名‘, os.stat(‘文件名‘).st_mode | stat.S_IXUSR)