2

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

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

  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 那些已经加入书签的网站 ;-))

4

2 回答 2

1

这是你的答案。文档指定以下内容适用于 windows 和 linux 。

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

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

  3. 程序的EUID可以读取位置,写入也一样。您可以使用os.access(path, mode)来了解需要 mode 指定权限的操作是否可以对 path 指定的文件进行。PS 这不适用于通过网络访问的文件。您可以使用os.stat这是获取所有信息的正确方法。然而,这是一个更昂贵的电话,因此,您应该尝试在一个电话中获取所有信息。要解释结果,您可以使用stat模块

于 2012-09-09T18:25:42.447 回答
1

似乎os.path会使用 isabs()、isfile()、isdir() 等来满足大部分这些需求。我想不出一个能给出简单 True/False 的函数对于给定文件的读/写访问,但解决此问题的一种方法可能是使用os模块的 stat 函数并查看文件的权限和所有者。

于 2012-09-09T18:26:55.973 回答