Python – 验证输入是真实文件夹而不是根目录

Python – validate input is real folder and not root

我正在 Python 中编写脚本。用户必须为 运行 上的脚本输入一个文件夹。有一些文件的复制和移动,在某个时候文件夹将被删除。因此,在任何情况下我都不希望此脚本位于根文件夹中 运行。 (或当前或 parent 就此而言)

所以我需要验证这一点。但是我该怎么做,因为“/”“./”“。” “..”等 .. 作为输入都是完全有效的,现有文件夹使用 os.path.isdir()。

我是否应该手动检查这些系统文件夹符号的输入。或者是否有更好的方法(可能是现有功能?)来检查输入是否是真正的现有文件夹,而不是系统或符号文件夹,如(root、current、parent、等等……)

您想规范化您的路径,使其成为绝对路径。您可能还想消除符号链接:

import os.path

normalized = os.path.realpath(os.path.absolute(path))
if normalized == '/':
    raise ValueError("Can't use root as a destination") 

使路径成为绝对路径会消除任何当前或父路径引用,以及任何双重分隔符。

要么在路径中禁止'..',要么使用abspath获取真实路径。