区分文件名和文件路径

时间:2013-01-17 03:21:18

标签: python

如果我们传递文件名和文件路径

,我需要调用不同的功能

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

我可以从sys.argv [1]获得参数。但我无法区分为文件和文件路径。(即文件或文件路径)

3 个答案:

答案 0 :(得分:1)

这是一个棘手的问题,因为文件的名称也是一个有效的相对路径,对吧? 你无法区分它。

另一方面,假设您想要区分绝对路径或以斜杠\反斜杠开头的相对路径,您可以使用 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

但是,如果相对路径不是带斜线的开头,则会失败:

>>> os.path.isabs('folder\\name.txt')
False

适用于上述所有情况的解决方案,对带有斜线或没有斜线的相对路径不敏感,将使用 os.path.basename(path) <执行路径尾部与路径本身的比较/ strong>即可。如果他们是平等的,那只是一个名字:

>>> 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

答案 1 :(得分:0)

您可以使用isdir()isfile()

档案:

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

导演:

>>> os.path.isfile('Doc')
False
>>> os.path.isdir('Doc')
True

答案 2 :(得分:0)

你试过吗

os.path.basename 

os.path.dirname