案例
某文件系统目录下,有一系列文件:
quicksort.c
graph.py
heap.java
install.sh
stack.cpp
...
编写程序给所有的.sh文件和.py文件加上用户可执行权限。
核心思路
(1)str.endswith
或者 str.startswith
(2)os.chmod(rp, os.stat(rp).st_mode | stat.S_IXUSR)
为文件添加可执行权限
核心代码
import os, stat
path = os.getcwd() # 当前文件所在目录
parent_path = os.path.dirname(path) # 当前文件所在目录的上级目录
file_path = os.path.join(path, 'fileDemo')
print(path, parent_path, file_path, sep="\n====\n")
filelist = os.listdir(file_path)
print(filelist)
s = 'g.sh'
flag = s.endswith(('sh', 'py')) # endWith函数的参数中,不仅支持单一字符串,也支持元组类型(只能是元组,不能为列表),且结果满足其一,结果即为True.
print(flag) # True
res = [name for name in filelist if name.endswith(('sh', 'py'))]
print(res) # ['a.sh', 'b.py', 'e.py', 'g.sh']
res_abs = list(map(lambda x: os.path.join(file_path, x), res))
print(res_abs)
for rp in res_abs:
mode = os.stat(rp).st_mode
o_mode = oct(mode)
os.chmod(rp, os.stat(rp).st_mode | stat.S_IXUSR) # 为文件添加可执行权限