免责声明:我已经在(Google)和此处搜索了有关此主题的一些信息,但大多数答案要么非常旧,要么对我来说似乎不太有意义,所以如果出现这种情况,我提前表示歉意看起来很简单或无知。
问题:我的应用程序接受命令行输入,该输入可能是路径或文件,我需要确定有关它的几件事。
- 是路径还是文件,
- 是相对的还是绝对的
- 是否可读和/或可写(需要读写测试结果)(忽略竞争情况的可能性)
一个警告,同时
try:
file=open(filename,'w')
except OSError as e:
{miscellaneous error handling code here}
显然会告诉我参数(上例中的文件名)是否存在/可写等。我对异常代码了解不够,不知道如何解释异常的结果。它也不会提供相对/绝对信息。
假设没有一种方法可以做到这一点,那么我需要知道三件事:
- 如何确定相对/绝对
- 它是指向文件还是目录
- 程序的EUID可以读取位置,写入也一样。
我正在寻求从我在这里收集的信息中学习,我是Python新手,并且已经完成了一个重要的项目。除了这部分,我已经掌握了所有内容。任何帮助,将不胜感激。 (欢迎指向好的帮助网站!)(除了已经添加书签的 docs.python.org ;-) )
最佳答案
这是您的答案。 documentations指定以下内容适用于 Windows 和 Linux。
如何确定相对/绝对 os.path.isabs如果路径是绝对路径则返回 True,否则返回 False。
是指向文件还是目录 类似地使用os.path.isdir找出路径是否是目录。 您可以使用os.path.isfile(path)查明路径是否为文件。
程序的EUID可以读取该位置,写入也一样。 您可以使用os.access(path, mode)了解需要模式指定权限的操作是否可以在路径指定的文件上进行。 附:这不适用于通过网络访问的文件。您可以使用os.stat这是获取所有信息的正确方法。然而,这是一个成本更高的调用,因此,您应该尝试在一次调用中获取所有信息。要解释结果,您可以使用 stat模块
关于Python 2.7,操作系统可移植的方式来确定用户输入路径的权限/内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12341588/