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

时间:2015-05-06 23:13:35

标签: python input types exception-handling 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

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

2 个答案:

答案 0 :(得分:2)

如果您想继续询问,直到用户使用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")

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

答案 1 :(得分:2)

Python有很多资源可用于执行各种路径操作。这是继续前进并熟悉它们的好时机。

请参阅os.path的文档,特别是print_r($dynamicMerge); 的文档 返回一对(root,ext),以便测试ext(扩展名)值。