【问题标题】:Using part of input as a filename使用部分输入作为文件名
【发布时间】:2014-04-15 16:23:12
【问题描述】:

我正在开发一个程序,它接受一个列表并将它们作为列表和元组进行管理。

我有一个非常简单(或者看起来如此)的问题:如果我有一个用于主循环命令的输入函数,我如何使用该命令加上一个文件名来编写 if/elif/else 等相同的输入?

例子:

可用命令:QUIT、INPUT 文件名

    cmd = input("Please input a command: ")
    while cmd != "QUIT":
        if cmd == "INPUT filename"
            file = open("filename")
            for line in file:
                line_list = line.strip().split(";")
                main_list.append(line_list)

我不知道如何让它将 INPUT 命令的文件名部分识别为要使用的文件名,同时让 IF 语句变得简单,如果 cmd == "INPUT filename" 或类似的,如果你知道我想说什么。

【问题讨论】:

  • 首先,你的 for 循环下面的缩进是错误的。
  • 呃抱歉,这只是因为之前从未编写过堆栈溢出代码:P

标签: python file input command


【解决方案1】:
    cmd = input("Please input a command: ")
    while cmd != "QUIT":
        if cmd.startswith("INPUT"):
            cmd = cmd.split()
            if len(cmd) != 2:
                print "Usage: INPUT <filename>"
            else:
                file = open(cmd[1])

【讨论】:

    【解决方案2】:

    如果filename 永远不会有空格,您可以使用

    filename = cmd.split(' ')[1]
    

    否则,你知道命令第一部分的长度,所以你可以使用:

    filename = cmd[6:]
    

    我认为第二种选择更可取。在您的代码中,这看起来像

    cmd = input("Please input a command: ")
    while cmd != "QUIT":
        if cmd.startswith("INPUT"): 
            if len(cmd) < 7:
                print "Usage: INPUT <filename>"
                continue
            filename = cmd[6:]
            file = open("filename")
            for line in file:
                line_list = line.strip().split(";")
                main_list.append(line_list)
    

    如果你有其他命令,INPUTSAVE 等,你可以使用类似的东西

    argument = cmd[len(command_name):]

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      相关资源
      最近更新 更多