Bilindiği gibi işletim sistemlerinin çalışma mantığı birbirinden farklıdır. Örneğin Windows işletim sisteminde klasör içersine girebilmek için "dir" komutu kullanılırken Linux işletim sistemlerinde "ls" komutunu kullanırız. Başka bir örnek olarak Windows işletim sistemlerinde dizin ayracı olarak "\" işareti kullanılırken Linux işletim sisteminde "/" işareti ayraç olarak kullanılır.
Bizde bu dersimizde bu gibi farklı kullanımları ortadan kaldırmak için os modülünü kullancağız. Modüle geçmeden önce eğer Python kod yazmada arayüz olarak Jupyter Notebook kullanıyorsanız göstermek istediğim herhangi bir modül kullanmadan kullanabileceğiniz 2 tane önemli kod parçacığını göstermek istiyorum. Eğer editör olarak Visual Studio Code, notepad gibi arayüzler kullanıyorsanız göstereceğim 2 kod parçacığı da çalışmayacaktır.
- %ls: Çalışmakta olduğunuz sayfanın kayıtlı olduğu klasörde bulunan dosyaları listelemeye yarar.
%ls
Çıktı:
Volume in drive C has no label. Volume Serial Number is 20FD-99A9 Directory of C:\Users\easan\Python\PythonCalismalari 11.12.2021 21:18 <DIR> . 11.12.2021 21:18 <DIR> .. 11.12.2021 21:06 <DIR> .ipynb_checkpoints 11.12.2021 20:47 22.139 class.ipynb 11.12.2021 21:18 4.507 Dosya ve Klasör Modülleri.ipynb 07.12.2021 16:45 3.446 Jupyter Notebook Kurulum ve Kullanımlar.ipynb 04.12.2021 22:05 410.146 Matplotlib.ipynb 07.12.2021 12:16 606.248 Pandas Visualization.ipynb 08.12.2021 14:05 60.504 Python.ipynb 06.12.2021 18:02 3.314.019 Seaborn.ipynb 06.12.2021 20:50 9.055 tips.csv 07.12.2021 10:43 61.365 titanic.csv 9 File(s) 4.491.429 bytes 3 Dir(s) 752.580.976.640 bytes free
-
%pwd : Çalışmakta olunan sayfanın yolunu göstermek için kullanılır.
%pwd
Çıktı:
'C:\\Users\\easan\\Python\\PythonCalismalari
os Modülü
os modülünü kullanabilmek için ilk olarak ilgili kütüphanenin içe aktarılması gerekmektedir.
import os
Bilmediğiniz bir kütüphanenin/modülün/değişkenin... hangi özellikleri kullandığını görebilmek için print(dir(isim)) yazarak içeriğine göz atabilirsiniz, os modülü için de aynı işlemi uygulayalım.
print(dir(os))
print(len(dir(os))) #kaç tane özelliği olduğu sayısı
Çıktı:
['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_AddedDllDirectory', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', ' __package__', '__spec__', '_check_methods', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'add_dll_directory', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', ' supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write'] 153
os modülünün kullanılabilir 153 tane özelliği bulunmaktadır. Bunlardan önemli olan bir kaç özelliği inceleyelim.
- os.name: İşletim sistemi adını öğrenmek için kullanılır. Windows için 'nt' iken MacOS ve GNU/Linux için 'posix' çıktısı elde edilir.
os.name
Çıktı:
'nt'
- os.sep: Kullanmış olduğumuz işletim sisteminin ayracının ne olduğunu gösterir.
os.sep
Çıktı:
'\\'
- os.getcwd(): Çalışmakta olduğumuz sayfanın yolunu (path) gösterir.
os.getcwd()
Çıktı:
'C:\\Users\\easan\\Python\\PythonCalismalari'
- os.chdir(): Bulunduğumuz dizinden başka bir dizin içine gitmemizi sağlar.
os.chdir("/spark/") os.getcwd()
Çıktı:
'C:\\spark'
- os.listdir(): Çalışmakta olduğunuz sayfanın kayıtlı olduğu klasörde bulunan dosya isimlerini görmeye yarar.
os.listdir()
Çıktı:
['.ipynb_checkpoints', 'class.ipynb', 'Dosya ve Klasör Modülleri.ipynb', 'Jupyter Notebook Kurulum ve Kullanımlar.ipynb', 'Matplotlib.ipynb', 'Pandas Visualization.ipynb', 'Python.ipynb', 'Seaborn.ipynb', 'tips.csv', 'titanic.csv']
os.listdir("/spark/") #başka klasörde olan dosyaları görmek için
Çıktı:
['bin', 'conf', 'data', 'examples', 'jars', 'kubernetes', 'LICENSE', 'licenses', 'NOTICE', 'python', 'R', 'README.md', 'RELEASE', 'sbin', 'yarn']
- os.startfile(): Parantez içerisinde yazılı dosya ismin varsayılan programla açmaya yarar.
os.startfile("titanic.csv") #Çıktı olarak excel ile titanic.csv dosyasını açar.
os.startfile("https://enesasan.com") #Çıktı olarak ilgili web sitesini açar.
- os.mkdir(): Yeni dizin (klasör) oluşturur, eğer aynı dizin adında başka bir dizin varsa hata verir.
os.mkdir("PythonDersleri") #Çıktı olarak PythonDersleri adında yeni klasör oluşturur.
- os.makedirs(): Yeni dizin (klasör) oluşturur ama os.mkdir'den farklı olarak eğer dosya yolu verilmişse o dosya yolu üzerinde olmayan klasörleri de oluşturur.
os.makedirs("/Users/easan/Python/PythonCalismalari/PythonCalismalari2") #Çıktı olarak ilgili yolu izler yol üzerinde ilgili klasör yoksa yeni klasör oluşturur.
- os.rmdir(): İçerisi boş olan klasörü silme komududur. Silme işleminde onay sormadığından dolayı dikkatli kullanılmasında fayda vardır.
os.rmdir("PythonCalismalari3/") #Çıktı olarak parantez içerisinde bulunan dosya silinecektir.
- Dosya oluşturma, okuma ve yazma işlemi: Çalışma yapılan klasör içersinde yeni dosya oluşturmak, okumak veya yazmak için kullanılan komutlardır.
#os.O_RDONLY - Read Only : Sadece oku #os.O_WRONLY - Write Only Sadece yaz #os.O_RDWR - Read and Write - Oku ve yaz #os.O_CREAT - Create - Oluştur
newFile=os.open("newFile.txt",os.O_CREAT | os.O_RDWR) #yeni dosya üret veya oku ve yaz os.write(newFile,"arinway.com".encode()) #dosya içine yaz os.close(newFile) #dosyayı kapat newFile=os.open("newFile.txt",os.O_RDONLY) #dosyayı sadece oku fileContent=os.read(newFile,5) #okuduğun değeri fileContent'e kaydet. 5 sayısı ilk 5 harfini kaydet print(fileContent) #ekrana yazdır. os.close(newFile) #dosyayı kapat
newFile=os.open("newFile2.txt",os.O_CREAT | os.O_RDWR) os.write(newFile,"arinway.com".encode()) os.close(newFile) newFile=os.open("newFile2.txt",os.O_RDONLY) fileContent=os.read(newFile,os.stat(newFile).st_size) #dosyanın tamamını okumak için print(fileContent.decode()) #türkçe karakter sorununu kaldırmak için encode yapılan kayır decode olarak geri çözülür os.close(newFile) #dosyayı kapat
- os.unlink(): Dosya silmek için kullanılır. (os.rmdir() klasör silmek için kullanılırdı)
os.unlink("yenidosya.txt") #Çıktı olarak ilgili dosya silinir. #Eğer dosya başka bir uygulama tarafından açılmışsa silinme işleminde hata verecektir.
- os.rename(), os.replace(): İkisi de dizinin adını değiştirmek için kullanılırlar. os.rename("şuanki adı","yeni adı") veye os.replace("şuanki adı","yeni adı")
os.rename("PythonCalismalari2","PythonCalismalari3") os.replace("PythonCalismalari3","PythonCalismalari4")
- os.system(): Parantez içersindeki .exe dosyalarını çalıştırmak için kullanılır.
os.system("test.exe")
- os.path.exists(): Dizin içinde parantez içerisinde bulunan dosya adı var mı diye bakar, varsa True yoksa False döndürür.
os.path.exists("PythonCalismalari3")
Çıktı:
True