使用while true函数可允许多个正确的用户输入

时间:2018-12-21 12:12:07

标签: python

我使用过一会儿True函数,以允许用户打开每月的excel文件。有没有办法让用户能够打开其他12个每月报告的文件,同时仍能处理错误的文件选择?

while True:
    file = input("select file name: ")
    if not file == "July":
        file - input("unknown file, hit enter to select file name")
        continue
    else:
         df = pd.read_excel('filename here')
    break 

2 个答案:

答案 0 :(得分:1)

您使用os.path.exists检查文件是否存在。除此之外,您可能还需要进行其他测试-您可能想要检查文件扩展名,或者确保文件扩展名位于特定目录中,或者执行其他正确的用户输入方法。如果要检查文件扩展名,则比使用pathlib.Path(它也有一个exist()方法)要糟糕得多。

带有os.path.exists()的简单示例:

import os.path

while True:
    file = input("select file name: ")
    if not os.path.exists(file):
        file - input("File does not exist, hit enter to select file name")   
        continue
    else:
        df = pd.read_excel(file)
    break

如果将条件语句放入while循环头中(如Guido所希望的那样),可以使代码更易读和简洁:

filename = input("select file name: ")
while not os.path.exists(filename):
    print("Error - file '%s' does not exist." % filename)
    filename = input("select file name: ")
df = pd.read_excel(filename)

答案 1 :(得分:0)

如果我正确理解,则可以将所有文件的名称存储在某个变量中,而将所有打开的文件存储在另一个变量中。在这种情况下,您只需要在用户打开全部12个文件时中断即可。

应该是这样的:

file_names = ("July", "August")
open_files = []
while True:
    file = input("select file name: ")
    if file not in file_names:
        input(
            "{file} - unknown file, hit enter to select file name".format(file)
        )
        continue
    elif file in open_files:
        file - input("{file} is already opened, try another one".format(file))
    else:
        df = pd.read_excel(file)
        open_files.append(file)

    if len(open_files) == 12:
        break