Python 從路徑獲取不帶副檔名的檔名

Muhammad Waiz Khan 2023年10月10日
  1. 在 Python 中使用 pathlib.path().stem 方法從路徑中獲取沒有副檔名的檔名
  2. 使用 Python 中的 os.path.splitext()string.split() 方法從路徑中獲取不帶副檔名的檔名
  3. 在 Python 中使用 os.path.basename()os.path.splitext() 方法從路徑中獲取檔名
Python 從路徑獲取不帶副檔名的檔名

本教程將演示在 Python 中從檔案路徑中獲取不帶副檔名的檔名的各種方法。假設我們的目標是從以字串形式存在的檔案路徑列表中獲取檔名,比如從路徑 Desktop/folder/myfile.txt 中,我們只得到沒有 .txt 副檔名的檔名 myfile

在 Python 中使用 pathlib.path().stem 方法從路徑中獲取沒有副檔名的檔名

path().stem 方法將檔案路徑作為輸入,通過從檔案路徑中提取檔名來返回。例如,從路徑 Desktop/folder/myfile.txt 中,它將返回不含 .txt 副檔名的 myfile

下面的程式碼示例演示瞭如何使用 path().stem 從檔案路徑中獲取不含副檔名的檔名。

from pathlib import Path

file_path = "Desktop/folder/myfile.txt"
file_name = Path(file_path).stem
print(file_name)

輸出:

myfile

使用 Python 中的 os.path.splitext()string.split() 方法從路徑中獲取不帶副檔名的檔名

os 模組的 path.splitext() 方法將檔案路徑作為字串輸入,並將檔案路徑和副檔名作為輸出。

由於我們要從檔案路徑中獲取檔名,所以可以先用 os.path.splitext() 方法將檔案路徑中的副檔名去掉。拆分結果的第一個元素就是沒有副檔名的檔案路徑。這個結果使用/作為分隔符進一步分割它。最後一個元素是沒有副檔名的檔名。下面的程式碼示例演示瞭如何使用 path.splitext()string.split() 方法從檔案路徑中獲取不帶副檔名的檔名。

import os

file_path = "Desktop/folder/myfile.txt"

file_path = os.path.splitext(file_path)[0]
file_name = file_path.split("/")[-1]
print(file_name)

輸出:

test

在 Python 中使用 os.path.basename()os.path.splitext() 方法從路徑中獲取檔名

在 Python 中,os 模組的 path.basename() 方法將檔案路徑作為輸入,並返回從檔案路徑中提取的基名。例如,Desktop/folder/myfile.txt 的基名是 myfile.txt

由於我們要從檔案路徑中獲取檔名,可以使用 path.basename() 方法提取基名,使用 path.splitext() 提取檔名。下面的程式碼示例演示瞭如何使用 path.basename()path.splitext() 方法從檔案路徑中獲取檔名。

import os

file_path = "Desktop/folder/myfile.txt"

basename = os.path.basename(file_path)
file_name = os.path.splitext(basename)[0]
print(file_name)

輸出:

myfile
警告
如果檔案的名字是 myfile.tar.gz,則上述所有方法都會返回 myfile.tar 作為檔名。

假設我們需要從路徑 Desktop/folder/myfile.tar.gz 中獲取不帶 . 後面的部分的檔名,比如 myfile 而不是 myfile.tar,可以使用 string.index() 方法從 myfile.tar 中只提取 myfile。但是這個方法的缺點是,如果 . 是檔名的一部分,比如 my.file.tar.gz,它將返回 my 作為檔名。

下面的程式碼示例,我們如何使用 string.index() 從上面解釋的方法的輸出 myfile.tar 中刪除 .tar

file_name = "myfile.tar"
index = file_name.index(".")
file_name = file_name[:index]
print(file_name)

file_name = "my.file.tar"
index = file_name.index(".")
file_name = file_name[:index]
print(file_name)

輸出:

myfile
my

相關文章 - Python File