枚举列表中的项目,以便用户可以选择数值

suf*_*ffa 2 python enumerate

我正在尝试找到列举列表中项目的最直接的方法,这样用户就不会在命令行上输入长文件名.下面的函数向用户显示文件夹中的所有.tgz和.tar文件......然后允许用户输入他想要提取的文件的名称.这对于用户来说是单调乏味并且语法错误.我想让用户只选择与文件相关的数值(例如.. 1,2,3等).有人可以给我一些方向吗?谢谢!

  dirlist=os.listdir(path)

  def show_tgz():
     for fname in dirlist:
          if fname.endswith(('.tgz','.tar')):
             print '\n'
             print fname
Run Code Online (Sandbox Code Playgroud)

Joc*_*zel 8

从文件列表开始:

files = [fname for fname in os.listdir(path) 
               if fname.endswith(('.tgz','.tar'))]
Run Code Online (Sandbox Code Playgroud)

现在你可以从字面上理解enumerate它们:

for item in enumerate(files):
    print "[%d] %s" % item

try:
    idx = int(raw_input("Enter the file's number"))
except ValueError:
    print "You fail at typing numbers."

try:
    chosen = files[idx]
except IndexError:
    print "Try a number in range next time."
Run Code Online (Sandbox Code Playgroud)

  • 你不应该把最后一行作为一行.单行有时难以理解,难以调试.此外,您的代码假定用户不会输入错误.虽然,我理解这段代码仅用于说明目的. (2认同)