检测无效文件输入,Python

时间:2015-12-13 18:01:11

标签: python input raiserror

我有一个编写Python脚本的任务,"检测文件是否可读"。

我不知道应该运行哪些例外。我们假设输入文件是一个文本文件,扩展名为*.txt

我应该提出的例外是什么?我怀疑应该有多个。目前,我有:

with open('example_file.txt") as textfile:
        if not textfile.lower().endswith('.txt'):
            raise argparse.ArgumentTypeError(
                'Not a text file! Argument filename must be of type *.txt')
        return textfile

但是,它只检查文件扩展名。我还能检查什么? Python中文件I / O的标准是什么?

1 个答案:

答案 0 :(得分:3)

检查文件是否存在

import os.path
if os.path.exists('example_file.txt'):
    print('it exists!')

除此之外,成功open该文件将演示可读性。如果内置open失败,则会引发IOError异常。失败可能由多个原因引起,因此我们必须检查它是否因可读性而失败:

import errno
try:
    textfile = open('example_file.txt', 'r')
    textfile.close()
    print("file is readable")
except IOError as e:
    if e.errno == errno.EACCES:
        print("file exists, but isn't readable")
    elif e.errno == errno.ENOENT:
        print("files isn't readable because it isn't there")

relevant section of the docs on file permissions.请注意,不建议在调用os.access之前使用open检查可读性。