区分文件名和文件路径

2024-09-29 02:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我们传递文件名和文件路径,我需要调用不同的功能

python test.py  test1 (invoke different function)         
python test.py  /home/sai/test1 (invoke different function)

我可以从系统argv[1] 一。但我无法区分文件和文件路径(即它是文件还是文件路径)


Tags: 文件pytest路径功能home文件名系统
3条回答

您可以使用^{}^{}

文件:

>>> os.path.isdir('a.txt')
False
>>> os.path.isfile('a.txt')
True

方向:

^{pr2}$

这有点棘手,因为文件名也是有效的相对路径,对吧? 你无法区分它。在

另一方面,假设您想区分以斜杠\反斜杠开头的绝对路径或相对路径,则可以使用os.path.isabs(path)。Doc说,它检查路径在Unix上是否以斜杠开头,在切掉一个潜在的驱动器盘符后,Win会出现反冲:

>>> import os
>>> os.path.isabs('C:\\folder\\name.txt')
True
>>> os.path.isabs('\\folder\\name.txt')
True
>>> os.path.isabs('name.txt')
False

但是,如果相对路径不是以斜线开头,则此操作将失败:

^{pr2}$

对于上面提到的所有情况都适用的解决方案是,使用os.path.basename(path)对路径尾部与路径本身进行比较,而不是对有斜杠或没有斜杠的相对路径敏感。如果他们是平等的,那只是一个名字:

>>> os.path.basename('C:\\folder\\name.txt') == 'C:\\folder\\name.txt'
False
>>> os.path.basename('\\folder\\name.txt') == '\\folder\\name.txt'
False
>>> os.path.basename('folder\\name.txt') == 'folder\\name.txt'
False
>>> os.path.basename('name.txt') == 'name.txt'
True

你试过了吗

os.path.basename 

或者

^{pr2}$

相关问题 更多 >