Python 2.7,操作系统可移植的方式来确定puser输入路径的权限/内容



免责声明:我在谷歌和这里搜索了一些关于这个主题的信息,但大多数答案要么很旧,要么对我来说不太有意义,所以如果这看起来很简单或不知情,我会提前道歉。

问题:我的应用程序接受命令行输入,可能是路径或文件,我需要确定有关它的几件事。

  1. 是路径还是文件
  2. 它是相对的还是绝对的
  3. 它可读和/或可写(需要读取和写入测试结果)(忽略比赛情况的可能性)

一个警告,而

    try:
        file=open(filename,'w')
    except OSError as e:
        {miscellaneous error handling code here}

很明显会告诉我参数(上面例子中的文件名)是否存在/可写等。我对异常代码了解不够,不知道如何解释异常的结果。它也不会提供相对/绝对信息。

假设没有一种方法可以做到这一点,那么我需要知道三件事:

  1. 如何确定相对/绝对
  2. 它指向的是文件还是目录
  3. 可以读取程序的EUID的位置,并且同样用于写入

我正在寻求从我在这里收集的信息中学习,我是python的新手,已经完成了一个重要的项目。除了这部分,我已经全部掌握了。如有任何帮助,我们将不胜感激。(欢迎指向好的帮助网站!)(除了那些已经添加了书签的docs.python.org;-))

以下是您的答案。文档规定以下内容适用于windows和linux。

  1. 如何确定相对/绝对如果路径是绝对路径,os.path.isabs将返回True;如果路径不是绝对路径,则返回False。

  2. 它指向的是文件还是目录类似地,使用os.path.isdir来确定路径是否为目录。您可以使用os.path.isfile(路径)来确定路径是否为文件。

  3. 可以读取程序的EUID的位置,并且同样用于写入。您可以使用os.access(路径,模式)来了解是否可以对路径指定的文件执行需要模式指定权限的操作。附言:这对通过网络访问的文件无效。你可以使用os.stat这是获取所有信息的正确方法。然而,这是一个更昂贵的电话,因此,你应该尝试在一个电话中获得所有信息。要解释结果,您可以使用统计模块

看起来os.path会用isabs()、isfile()、isidir()等来满足大多数这些需求。在我的脑海中,我想不出有哪个函数能为给定文件的读写访问提供简单的True/False,但解决这个问题的一种方法可能是使用os模块的stat函数,并查看文件的权限和所有者。

最新更新