我使用过一会儿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
答案 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