簡體   English   中英

區分文件名和文件路徑

[英]differentiate between file name and file path

如果我們傳遞文件名和文件路徑,我需要調用其他功能

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

我可以從sys.argv [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

您可以使用isdir()isfile()

文件:

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

迪爾:

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

你試過了嗎

os.path.basename 

要么

os.path.dirname

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM