Lewati ke konten utama

Cara Mendapatkan Direktori Saat Ini di Python

Untuk mendapatkan current working directory di Python, Anda dapat menggunakan os.getcwd() dari modul os atau pathlib.Path.cwd() dari modul pathlib.
Diperbarui 28 Sep 2026

Jelajahi bersama AI

ChatGPTClaudePerplexity

Banyak program Python perlu menavigasi sistem berkas untuk membaca dan menulis file. Operasi umum adalah mengambil current working directory, yang sering disingkat menjadi CWD.

Python memiliki dua modul utama yang dapat digunakan untuk mengakses path sistem berkas: os module dan pathlib module.

Modul os menawarkan pendekatan tradisional untuk mendapatkan current working directory dan bekerja dengan path serta sistem berkas.

Modul pathlib lebih baru dan menawarkan pendekatan berorientasi objek yang andal serta lintas platform.

Dalam tutorial ini, saya membahas berbagai teknik untuk mengambil dan memanipulasi current working directory. Jika Anda ingin mempelajari lebih lanjut tentang Python, silakan jelajahi beberapa tulisan blog saya lainnya:

Python: Cara Mendapatkan Current Working Directory (CWD)

Current working directory adalah direktori tempat program Python dijalankan. Direktori ini berfungsi sebagai titik acuan untuk path relatif dan memungkinkan program mengakses file dan sumber daya dalam hierarki direktori.

Mari kita lihat cara mengakses current working directory menggunakan modul os dan pathlib serta membandingkan kedua solusinya.

Menggunakan os.getcwd()

Modul os memungkinkan akses ke sistem operasi komputer. Fungsi getcwd() mengambil current working directory:

import os
cwd = os.getcwd()
print(cwd)
/Users/sg/Documents/GitHub/datacamp

Keluaran menunjukkan path direktori yang berisi skrip. Format path bergantung pada sistem operasinya. Keluaran di atas adalah untuk sistem operasi POSIX seperti Linux, Unix, dan macOS.

Path yang sama pada sistem Windows akan ditampilkan sebagai berikut:

C:\Users\sg\Documents\GitHub\datacamp

Nilai yang dikembalikan oleh os.getcwd() adalah sebuah string:

print(type(cwd))
<class 'str'>

Oleh karena itu, kita perlu menggunakan metode string dan operasi string lainnya untuk menangani path ini.

Menggunakan pathlib.Path.cwd()

Python 3.4 memperkenalkan modul pathlib, yang menawarkan pendekatan berorientasi objek untuk mengakses dan memanipulasi path file. Kelas utama di pathlib adalah Path, yang dapat kita impor sebelum mendapatkan current working directory:

from pathlib import Path
cwd = Path.cwd()
print(cwd)
/Users/sg/Documents/GitHub/datacamp

Keluaran dari Path.cwd() terlihat mirip dengan nilai yang dikembalikan oleh os.getcwd(). Namun, Path.cwd() tidak mengembalikan string. Kita dapat mengonfirmasinya dengan mencetak tipe objek yang dikembalikan atau menampilkan representasi string resminya menggunakan repr():

print(type(cwd))
print(repr(cwd))
<class 'pathlib.PosixPath'>
PosixPath('/Users/sg/Documents/GitHub/datacamp')

Di komputer Windows, Path.cwd() mengembalikan objek WindowsPath.

Objek PosixPath dan WindowsPath menyediakan fungsionalitas serupa untuk memungkinkan program lintas platform. Berikut beberapa atribut objek ini:

print(cwd.parent)
print(cwd.name)
/Users/sg/Documents/GitHub
datacamp

Sebisa mungkin, lebih baik menggunakan modul pathlib, yang lebih modern dan memudahkan pengelolaan path. Anda dapat membaca panduan lengkap menggunakan pathlib di Python jika ingin mempelajari lebih lanjut.

Bekerja dengan Direktori Saat Ini

Program Python sering kali perlu memanipulasi path, misalnya untuk menyimpan file di subfolder. Misalkan kita perlu membuat subdirektori baru di current working directory dan menyimpan file teks di folder baru tersebut.

Menggunakan modul os

Fungsi getcwd() dalam modul os mengembalikan string. Karena itu, dimungkinkan untuk mengubah string ini secara manual guna memodifikasi path. Namun, modifikasi yang diperlukan bervariasi tergantung pada sistem operasi karena setiap sistem memiliki format path yang berbeda. Opsi yang lebih baik adalah menggunakan os.path.join():

import os
cwd = os.getcwd()
output_path = os.path.join(cwd, "testing_os")
print(output_path)
/Users/sg/Documents/GitHub/datacamp/testing_os

Path yang dikembalikan os.path.join() sudah dalam format yang benar untuk sistem operasi yang digunakan. Ini mengembalikan string dengan path baru. Kita dapat memeriksa apakah subfolder ini ada dengan os.path.exists(), yang mengembalikan nilai Boolean:

print(os.path.exists(output_path))
False

Ini menunjukkan bahwa path yang direpresentasikan oleh output_path belum ada. Modul os menyediakan alat untuk membuat folder ini. Fungsi os.mkdir() membuat direktori baru:

os.mkdir(output_path)
print(os.path.exists(output_path))
True

Subfolder baru sekarang ada, dan file baru dapat disimpan di folder ini:

output_file = os.path.join(output_path, "test.txt")
with open(output_file, "w") as file:
    file.write("Testing path modification with the 'os' module")

Variabel output_file berisi nama file keluaran yang diinginkan beserta path lengkapnya. File teks ini dibuat di subfolder /testing_os dalam current working directory.

Kita juga dapat menampilkan semua item dalam sebuah folder menggunakan os.listdir():

for item in os.listdir(output_path):
    print(item)
test.txt

Fungsi os.listdir() mengembalikan list berisi semua item di direktori. Kode ini melakukan iterasi melalui list tersebut untuk menampilkan setiap file atau folder pada baris terpisah. Dalam contoh ini, direktori berisi satu file teks.

Menggunakan modul pathlib

Modul pathlib yang lebih baru juga menyediakan alat untuk membuat path baru. Modul ini menggunakan operator garis miring / untuk menggabungkan elemen menjadi sebuah path. Ini adalah operator yang sama yang digunakan untuk pembagian tipe data numerik, tetapi juga merupakan karakter yang digunakan dalam path file di sistem operasi POSIX. Mari buat path baru dan periksa bahwa path tersebut belum ada:

from pathlib import Path
cwd = Path.cwd()
output_path = cwd / "testing_pathlib"
print(output_path)
print(Path.exists(output_path))
/Users/sg/Documents/GitHub/datacamp/testing_pathlib
False

Kelas Path memiliki metode .mkdir() sendiri untuk membuat direktori baru:

Path.mkdir(output_path)
print(Path.exists(output_path))
True

Karena output_path adalah objek PosixPath atau WindowsPath, kita dapat menggunakan operator garis miring di mana saja untuk membuat path baru:

with open(output_path / "test.txt", "w") as file:
    file.write("Testing path modification with the 'pathlib' module")

File teks baru dibuat di folder /testing_pathlib.

Kita dapat menggunakan metode Path .iterdir() untuk melakukan iterasi melalui setiap item dalam folder:

for item in Path.iterdir(output_path):
    print(item)
/Users/sg/Documents/GitHub/datacamp/testing_pathlib/test.txt

Seperti alat lainnya di pathlib, nilai yang dikembalikan bukan string. Sebaliknya, ini adalah objek PosixPath atau WindowsPath. Kita dapat menggunakan atribut .name untuk menampilkan nama file atau folder tanpa path lengkap:

for item in Path.iterdir(output_path):
    print(item.name)
test.txt

Jika os.listdir() mengembalikan list, pathlib.Path.iterdir() mengembalikan objek generator (Anda dapat membaca tutorial ini tentang Iterator dan Generator di Python jika Anda perlu penyegar):

print(Path.iterdir(cwd))
<generator object Path.iterdir at 0x1036b2c20>

Perilaku ini mengikuti praktik terbaik di Python modern karena iterator dan generator lebih efisien dalam situasi tertentu.

Mengubah Current Working Directory (CWD)

Kita juga dapat mengubah current working directory langsung dari dalam program Python menggunakan os.chdir(). Karena ini bukan operasi yang terkait langsung dengan path, tidak ada versi alternatif di pathlib. Namun, kita tetap dapat menggunakan objek pathlib.Path sebagai argumen:

import os
from pathlib import Path
cwd = Path.cwd()
print(cwd)

os.chdir(cwd.parent)
cwd = Path.cwd()
print(cwd)
/Users/sg/Documents/GitHub/datacamp
/Users/sg/Documents/GitHub

Working directory sekarang telah berubah. Kita juga dapat menggunakan cwd.parent.resolve() untuk memastikan tautan simbolik ditangani dengan benar. Argumen dalam os.chdir() juga dapat berupa string, seperti path yang dikembalikan oleh fungsi-fungsi dalam modul os.

Berhati-hatilah saat mengubah working directory di dalam program untuk memastikan tidak ada perilaku yang tidak terduga.

Praktik Terbaik dan Tips

Berikut beberapa praktik terbaik dan tips saat bekerja dengan path di Python:

Praktik Terbaik untuk Bekerja dengan Path di Python

Kesimpulan

Menavigasi dan memanipulasi path file adalah kebutuhan umum di banyak program Python. Modul os menyediakan fungsi tradisional untuk menangani tugas-tugas ini, sementara modul pathlib menawarkan pendekatan yang lebih modern dan berorientasi objek. Menggunakan pathlib tidak hanya menyederhanakan banyak operasi, tetapi juga memastikan kode Anda tetap lintas platform dan lebih mudah dibaca.

Baik Anda memelihara basis kode yang ada yang menggunakan os maupun memulai proyek baru di mana Anda dapat memanfaatkan pathlib, memahami kedua modul dan kemampuannya akan memberi Anda fleksibilitas dan kepercayaan diri untuk mengelola path di proyek Python apa pun.

Anda dapat melanjutkan perjalanan belajar Python Anda dengan kursus-kursus berikut:


Stephen Gruppetta's photo
Author
Stephen Gruppetta
LinkedIn
Twitter

Saya belajar Fisika dan Matematika pada tingkat sarjana di University of Malta. Kemudian, saya pindah ke London dan meraih gelar PhD dalam bidang Fisika dari Imperial College. Saya meneliti teknik optik baru untuk memindai retina manusia. Sekarang, saya berfokus menulis tentang Python, berkomunikasi tentang Python, dan mengajar Python.

Topik
Python

Pelajari Python dengan kursus-kursus ini!

{count, plural, one {Kursus} other {Kursus}}

Pengantar Python untuk Pengembang

{hours} jam
182K
Kuasai dasar-dasar pemrograman dalam Python. Tidak diperlukan pengetahuan sebelumnya!
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

{count, plural, one {blog} other {blogs}}

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

{count, plural, one {blog} other {blogs}}

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

{count, plural, one {blog} other {blogs}}

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

{count, plural, one {blog} other {blogs}}

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya