Dengan Python, perintah apa yang harus saya gunakan untuk mendapatkan nama folder yang berisi file yang saya kerjakan?
"C:\folder1\folder2\filename.xml"
Inilah "folder2"
yang ingin saya dapatkan.
Satu-satunya hal yang saya temukan adalah menggunakan os.path.split
dua kali:
folderName = os.path.split(os.path.split("C:\folder1\folder2\filename.xml")[0])[1]
Apakah ada cara yang lebih baik untuk melakukannya?
python
python-3.x
directory
Dengan mudah
sumber
sumber
Jawaban:
Anda dapat menggunakan
dirname
:Dan diberi jalur lengkap, maka Anda dapat membagi secara normal untuk mendapatkan bagian terakhir dari jalur tersebut. Misalnya dengan menggunakan
basename
:Bersama:
>>> import os >>> path=os.path.dirname("C:/folder1/folder2/filename.xml") >>> path 'C:/folder1/folder2' >>> os.path.basename(path) 'folder2'
sumber
Anda ingin menggunakan dirname . Jika Anda hanya menginginkan satu direktori itu, Anda dapat menggunakan os.path.basename ,
Jika disatukan, tampilannya akan seperti ini:
os.path.basename(os.path.dirname('dir/sub_dir/other_sub_dir/file_name.txt'))
Itu akan membuat Anda "other_sub_dir"
Berikut ini bukan pendekatan yang ideal, tetapi saya awalnya mengusulkan, menggunakan os.path.split, dan hanya mendapatkan item terakhir. yang akan terlihat seperti ini:
os.path.split(os.path.dirname('dir/sub_dir/other_sub_dir/file_name.txt'))[-1]
sumber
ini cukup tua, tetapi jika Anda menggunakan Python 3.4 atau lebih tinggi gunakan PathLib .
# using OS import os path=os.path.dirname("C:/folder1/folder2/filename.xml") print(path) print(os.path.basename(path)) # using pathlib import pathlib path = pathlib.PurePath("C:/folder1/folder2/filename.xml") print(path.parent) print(path.parent.name)
sumber
os.path.dirname
adalah apa yang kamu cari -os.path.dirname(r"C:\folder1\folder2\filename.xml")
Pastikan Anda menambahkan
r
string sehingga dianggap sebagai string mentah.Demo -
In [46]: os.path.dirname(r"C:\folder1\folder2\filename.xml") Out[46]: 'C:\\folder1\\folder2'
Jika Anda hanya ingin
folder2
, Anda dapat menggunakanos.path.basename
dengan di atas, Contoh -os.path.basename(os.path.dirname(r"C:\folder1\folder2\filename.xml"))
Demo -
In [48]: os.path.basename(os.path.dirname(r"C:\folder1\folder2\filename.xml")) Out[48]: 'folder2'
sumber
Anda bisa mendapatkan jalur lengkap sebagai string lalu membaginya menjadi daftar menggunakan karakter pemisah sistem operasi Anda. Kemudian Anda mendapatkan nama program, nama folder, dll. Dengan mengakses elemen dari akhir daftar menggunakan indeks negatif.
Seperti ini:
import os strPath = os.path.realpath(__file__) print( f"Full Path :{strPath}" ) nmFolders = strPath.split( os.path.sep ) print( "List of Folders:", nmFolders ) print( f"Program Name :{nmFolders[-1]}" ) print( f"Folder Name :{nmFolders[-2]}" ) print( f"Folder Parent:{nmFolders[-3]}" )
Keluaran di atas adalah ini:
Full Path :C:\Users\terry\Documents\apps\environments\dev\app_02\app_02.py List of Folders: ['C:', 'Users', 'terry', 'Documents', 'apps', 'environments', 'dev', 'app_02', 'app_02.py'] Program Name :app_02.py Folder Name :app_02 Folder Parent:dev
sumber
Anda dapat menggunakan pathlib
from pathlib import Path Path(r"C:\folder1\folder2\filename.xml").parts[-2]
Keluaran di atas adalah ini:
'folder2'
sumber
Saya menggunakan 2 cara untuk mendapatkan respons yang sama: salah satunya menggunakan:
karena kesalahan yang saya temukan di skrip saya, saya berubah menjadi:
Path = filename[:(len(filename)-len(os.path.basename(filename)))]
itu solusi karena python
'\\'
sumber