python - 异常处理,只接受特定的文件输入

标签 python input types exception filenames

这比我的工资等级高一点,所以我想我会在这里问一下。

我的简单 Python 代码提示用户输入文件名。但是,它必须是特定类型的文件,否则我会抛出错误。在这种情况下,输入的文件必须是文本或 CSV 文件,即文件扩展名必须是 .txt.csv

filename = raw_input("Please enter .txt or .csv file: ")

我不知道如何测试它。你从类似的东西开始

def fileName():
   while True:
       try: 
           filename = raw_input("Please enter .txt or .csv file: ")

然后使用 if 语句检查最后四个字符是 .txt 还是 .csv

执行此操作的标准方法是什么?

最佳答案

如果您想一直询问,直到用户使用 str.endswith 输入具有正确扩展名的文件名:

def fileName():
   while True:
       filename = raw_input("Please enter .txt or .csv file: ")
       if filename.endswith((".csv",".txt"))
          return filename
       else:
            print("Extension must be .csv or .txt")

如果您实际上只想验证输入并在错误输入时引发错误:

   def fileName():
       filename = raw_input("Please enter .txt or .csv file: ")
       if filename.endswith((".csv",".txt")):
           return filename
       raise ValueError("Extension must be .csv or .txt")

您不需要 try/except 来检查最后四个字符是 .txt 还是 .csv,只是因为文件名可能以正确的扩展名结尾并不意味着它是一个有效文件或在打开时不会导致错误,您应该担心在实际打开文件时捕获异常。

关于python - 异常处理,只接受特定的文件输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089239/

相关文章:

python - 如何获得一系列列表的基本统计数据?

python 如何将一个类的实例变量获取到另一个类?

python - 如何使用 FastAPI + uvicorn 在工作人员之间共享数据库连接?

python - 在一个函数中获取输入并在另一个函数中调用它

c# - 使用 Type 变量调用正确的泛型方法,带 out 和 ref

c# - 如何确定对象类型是否为内置系统类型

python - 在 python 中向 Web 服务发送 POST 请求

jquery - 如何为表单的所有输入绑定(bind)一个事件?

html - 删除输入框

types - 如何最终确定 Ada 保护类型