python 实现运行shell命令
class CMD(object):
"""
运行windows shell 命令
"""
__instance__ = None
def __new__(cls, *args, **kwargs):
"""
实现单例模式
"""
if cls.__instance__ is None:
cls.__instance__ = super().__new__(cls, *args, **kwargs)
return cls.__instance__
@staticmethod
def is_admin():
"""
判断是否admin
"""
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except Exception as e:
logger.error("Error: ", e)
return False
def run_cmd(self, cmd):
"""
windows下运行shell命令
"""
cmd_list = [cmd] if isinstance(cmd, str) else cmd
if self.is_admin:
for c in cmd_list:
result_status, result_str = subprocess.getstatusoutput(c)
logger.info(f"CMD>>>>> {c}, status: {result_status}, {result_str}")
return result_status, result_str
else:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)