gpt4 book ai didi

python - 如何在 Python 中创建漂亮的 shell 命令包装器

转载 作者:行者123 更新时间:2023-12-01 04:27:28 25 4
gpt4 key购买 nike

我创建了特殊的元类,这样我就可以为带有第一个“action”参数(没有破折号)的程序/命令提供很好的包装。特别是 svn、git 等。我不想为此目的使用外部工具。

  import subprocess

class CmdWrap(type):

def __new__(mcs, name, bases=(object,), dict={}):
dict['name'] = name
return type.__new__(mcs, name, bases, dict)

def __getattr__(self, name):
def run_cmd(*args, **kwds):
cmd = (self.name, name) + args
process = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
cwd=None)
out = process.communicate()

if process.returncode != 0:
raise Exception(cmd, process.returncode, out)
else:
return out

if name in self.__dict__:
return self.__dict__['name']
else:
return run_cmd

你觉得怎么样?更喜欢像这样运行您最喜欢的命令:

svn = CmdWrap('svn')
svn.ls('http://your_repository/')

可以做得更好吗?或者您认为这是元类的滥用?告诉我。

最佳答案

所以这不是对你的问题的直接回答,但是你看过sh吗?已经?在我看来,它正是在做你想做的事。即使不是,它也是开源的,您可以看看他们是如何完成任务的。特别是 CommandRunningCommand 类,您可以在其 github repository 中找到它们。可能对你有用。

关于python - 如何在 Python 中创建漂亮的 shell 命令包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32889618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com