我正在编写一个简单的安装向导,就像Python中的脚本。基本上,它会提示用户输入一些值,并回答一些是/否问题。根据用户输入,脚本将生成目录、创建和初始化配置文件、创建符号链接、设置权限等等。
由于用户选择不同的路径,目录的结构和符号链接的存在可能不同。每个步骤都可能会出现许多问题,可能需要用户更改输入或回滚整个过程。
1 -Is --这是编写这个脚本的最佳方法吗?这个文本菜单设置向导是一个好主意吗?
有什么模块可以帮助我简化程序,这样我就不会重新发明轮子了吗?
当用户做出选择时,我应该实际地执行每一步吗?还是等待到结束时立即完成所有的操作?
记住已经创建的结构,以便编写回滚函数的最佳方式是什么?
我不希望任何代码作为答案,任何建议、意见或外部链接都会受到欢迎。
发布于 2013-03-24 17:58:07
我不做GUI的事。您可以编写一个,但是假设您完全是在命令行中完成的。
quickstart时,它会问用户许多问题。Sphinx直到结束才生成物理目录和配置文件。这就消除了“记住”的需要是累人的。树枝太多了。别干那事。在最后完成整个设置。实际上,我正在开发一个名为dcoprompt的程序,但它还没有完成。https://bitbucket.org/yeukhon/docprompt基本上应该允许你写下你的设置提示,然后记住它们。代码库很糟糕,效率不高。你可以试一试,但由于这学期作业繁重,我要到夏天才能完成这个功能。
所以答案是否定的。你必须自己写代码。只是有很多原始输入和很多变量。
编辑
假设您一直等到创建目录和符号链接的结束,并且在发生IOError的步骤之一时,您希望撤消整个设置。如果您正在创建的只是目录、文件和符号链接,请将它们添加到列表字典中。看我的编辑。
def physical_setup(...):
    memory = {
        'dirs': [],
        'symlinks': [],
        'files': []
    }
    try:
        # start doing physical setup
        memory['dirs'].append('/tmp/dir1')        
        os.path.mkdir('/tmp/dir1')
    # catching all exceptions is considered a bad practice but sometimes be a little badass
    except Exception as e:
        for key, valist in memory.iteritems():
            if key == 'dirs':
                for dir in valist:
                    shutil.rmtree(dir)重要:上面的代码有一个问题,您应该在删除文件夹之前取消链接、删除文件和目录。因为如果文件是已经删除的目录的一部分,您将不得不悄悄地捕获异常。很多密码。只是取消链接,删除文件和dir。
https://stackoverflow.com/questions/15601870
复制相似问题