2016-11-28 129 views
2

在Python中,針對特定操作系統(Linux操作系統,Mac或Windows),是有可能有這樣一個路徑:路徑永遠是文件還是目錄是真的嗎?

os.path.exists(path) == True 
os.path.isfile(path) == False 
os.path.isdir(path) == False 

如果是這樣,有什麼類型的路徑?

瞭解這一點有助於正確處理輸入路徑。

此問題可能依賴於實現,所以請給出一些參考。

編輯。我在Linux上找到了這樣一個文件,它是/dev/tty。所以這個問題的答案是NO。但是,知道是否有其他路徑滿足上述屬性仍然很有趣。

+0

那麼,在Windows中可以有這麼多的路徑鏈接到一個特定的文件或文件夾。當你刪除一個文件夾或文件時,鏈接將是懸掛鏈接。我相信,Linux也是如此。並且path.exists()爲懸掛鏈接返回false。所以,(假設)不存在能夠滿足上述條件的鏈接。 – Prajwal

+0

@Prajwal我在Linux上找到了這樣的路徑:'/ dev/tty'。現在我想知道是否有更多這樣的路徑。我不熟悉Windows,我認爲需要參考操作系統製造商詳細說明支持的文件類型。 – Cyker

回答

0

如果您熟悉鏈接的概念,那麼您知道如果您刪除了原始文件,那麼軟鏈接將被打破。這將返回falsepath.exists()。由於這兩種鏈接都會引用其他文件或文件夾,它會檢查並返回鏈接文件或文件夾的存在。

如果你想檢查這種斷開的鏈接,那麼你將不得不使用path.lexists()

但是在類似UNIX的系統中,有特殊文件,套接字或命名管道,這些文件或文件夾的行爲與普通文件或文件夾相同,但都不是。我從 - >here瞭解了它。所以,我必須糾正我的答案,這些條件存在。

+0

不幸的是,這種可能性在另一個維度上。查看問題評論。 – Cyker

0

我沒有得到你的問題,但我會解釋那些命令做了什麼。如果不存在其他該路徑返回false即使ü拼寫dekstop作爲destop

print(os.path.exists(path)) 

此命令返回true。在mac os中,ubuntu u應該執行區分大小寫。

variable="c://users//stack//desktop/input.txt" 
print(os.path.isfile(variable)) 

在上述情況下,如果文件存在於設備中,並且路徑爲true,則返回true,否則返回false。

variable="c://users//stack//desktop/folder/input.txt" 
print(os.path.isdir(variable)) 

它拋出假的,因爲在上述情況下,將檢查directory.so,U不得不提這樣的:

variable="c://users//stack//desktop/folder" 
print(os.path.isdir()) 

如果您的設備存在該文件夾,它將返回否則真將返回false。

相關問題