本文实现了一个简单的装饰器,可用于固定工作目录。
不说废话直接上代码
import os
import subprocess
import sys
def FixWd(f):#固定工作目录的装饰器
def ret(*args, **kwargs):
strPwd = os.getcwd()
r=f(*args, **kwargs)
os.chdir(strPwd)
return r
return ret
@FixWd
def run1():
os.chdir('./1')
r = subprocess.run('./1.sh')
return
@FixWd
def run2():
os.chdir('./2')
r = subprocess.run('./2.sh')
return
def main():
run1()
run2()
return 0
if __name__ == "__main__":
sys.exit(main())
在1、2两个文件夹里各有一个脚本,需要切换工作目录运行。但在run1、run2中只需更改一次工作目录,不需要恢复。装饰器会恢复工作目录。