Mengendalikan Paths
Python dapat merubah struktur folder dan mengendalikan beberapa file system dalam OS sendiri. Operating System (OS) adalah lingkungan kerja yang dapat berinteraksi dengan perangkat keras, contohnya Windows dan Linux
Contoh direktori di Windows
C:\Users\Ronald
Contoh direktori di Linux
/home/Ronald
Di modul kali ini saya menggunakan Windows sebagai OS.
Python memiliki dua modul bawaan untuk memanipulasi path : os dan pathlib
OS
Silahkan import modul os dahulu
>>> import os
Mendapatkan informasi path sekarang
>>> os.getcwd()
'D:\\Documents\\belajar paths'
Ubah path sekarang ke tempat lain
>>> os.chdir('D:\Kaspersky')
>>> os.getcwd()
'D:\\Kaspersky'
Membangun path file sendiri, berguna ketika menjalankan program di OS berbeda. Contoh penggunaan di Windows
>>> path = os.path.join('folder', 'subfolder', 'file.txt')
>>> path
‘folder\\subfolder\\file.txt’
Contoh penggunaan di Linux / Mac
>>> path = os.path.join('folder', 'subfolder', 'file.txt')
>>> path
‘folder/subfolder/file.txt’
Perhatikan backslash (/) yang digunakan berbeda, Windows menggunakan (\) sedangkan Linux / Mac menggunakan (/)
Membuat folder baru
>>> os.mkdir('new_directory')
Melihat daftar directory di path yang aktif sekarang
import os
path = os.getcwd()
for dirs in os.listdir(path):
print(f'Directory: {dirs}')
Pathlib
Pathlib merupakan modul yang dibawa Python versi 3.4. Membantu efisiensi dalam pemrogaman paths.
Silahkan import modul pathlib dahulu
>>> import pathlib
Mendapatkan informasi path sekarang
>>> pathlib.Path.cwd()
WindowsPath('D:/Documents/belajar paths')
Perhatikan hasil diatas. Hasil dari pathlib.Path.cwd() lebih mendetail dibanding os.getcwd()
Ubah path sekarang ke tempat lain
>>> os.chdir('D:\Kaspersky')
>>> pathlib.Path.cwd()
WindowsPath('D:/Kaspersky')
Membangun path file sendiri
>>> path = pathlib.Path('folder')/'subfolder'/'file.txt'
>>> path
WindowsPath('folder/subfolder/file.txt')
Membuat folder baru
>>> cwd = pathlib.Path.cwd()
>>> (cwd/'new_directory').mkdir()
Melihat daftar directory di path yang aktif sekarang
from pathlib import Path
path = Path.cwd()
for directory in path.iterdir():
print(directory)
Absolute Paths dan Relative Paths
Ada 2 cara untuk menjelaskan letak file yang akan di panggil:
- Absolute Paths memulai pemanggilan file lewat root folder (parent ke child)
- Relative Paths memulai pemanggilan file lewat folder yang aktif bekerja sekarang secara relative
Tanda seperti '.' dan '..' merupakan pemanggilan dari relative paths. '.' atau dot merupakan tanda folder yang aktif sekarang dan '..' atau double dot merupakan tanda folder sebelumnya.
Cek sebuah folder apakah absolute paths atau relative path dengan os dan pathlib
menggunakan os.path di Linux
>>> import os
>>> os.path.isabs('/')
True
>>> os.path.isabs('..')
False
menggunakan pathlib di Linux
>>> from pathlib import Path
>>> Path('/').is_absolute()
True
>>> Path('..').is_absolute()
False
Anda juga bisa melihat path apa yang dipanggil lewat tanda relative paths dan di ekstrak ke absolute paths
menggunakan os.path di Linux
>>> import os
>>> os.getcwd()
'/home/askus'
>>> os.path.abspath('..')
'/home'
menggunakan pathlib di Linux
>>> from pathlib import Path
>>> print(Path.cwd())
/home/askus
>>> print(Path('..').resolve())
/home
Relative paths akan memudahkan developer dalam pemanggilan path file yang diinginkan didalam program yang berjalan.