我不做 GUI 的东西。您可以编写一个,但假设您完全在命令行上执行此操作。
我建议在产生物理副作用之前接受所有用户输入。换句话说,在用户完成所有选项之前不要开始创建目录。Python 文档工具 Sphinx 就是一个很好的例子。当用户启动时,它会询问用户许多问题quickstart
。Sphinx 直到最后才生成物理目录和配置文件。这样就省去了“记住”的累人。分支太多。不要那样做。在最后完成整个设置。
要看。如果你想制作一个简单的命令行界面,Python 有 argpase 来制作命令行选项。使用构建在 argparse 之上的docopt库可以实现上述操作。但是,如果您想拥有命令行,这很有用。如果您的脚本只需要调用“python script.py”然后开始询问用户问题,我不知道有任何有用的库可以处理设置内容。
实际上我正在开发一个,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)
重要:上面的代码有一个问题,您应该在删除文件夹之前取消链接、删除文件和目录。因为如果文件是已删除目录的一部分,您将不得不静默捕获异常。很多代码。只需取消链接,删除文件和目录。