1

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

前任

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

我可以从 sys.argv[1] 得到参数。但我无法区分文件和文件路径。(即它是文件还是文件路径)

4

3 回答 3

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)将路径尾部与路径本身进行比较。如果它们相等,则只是一个名称:

>>> 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
于 2017-02-19T04:56:45.760 回答
0

你试过了吗

os.path.basename 

或者

os.path.dirname
于 2013-01-17T03:29:21.837 回答
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
于 2013-01-17T03:23:51.497 回答