husonet | Tarih: 02.12.2014
Python Os Modülü.
Python için çeşitli işletim sistemi arabirimleri
import os bu modül işletim sistemi bağımlılıklarında işlevselliği arttırmak için taşınabilir bir yol sunar. Eğer sadece okuma / yazma yapmak istiyorsanız open() fonksiyonlarına, path işlemleri için os.path modülüne ve tüm dosyaları komut satırında tüm satırları görmek istiyorsanız fileinput modülüne bakınız. Geçici dosya ve dizinlerle ilgili işlemler görmek ve geçici modül oluşturmak ve üst düzey dosya ve dizin taşıma işlemleri için shutil modülüne bakabilirsiniz.
İşlevler kullanılabilirliği ile ilgili notlar:
- Python kullanılabilir olan dahili tüm işletim sistemi işlevlerini kullanabilir. Aynı arayüzü kullanan örneğin işlev os.stat(path) aynı formatta yol hakkında bilgi döndürür.
- Belirli bir işletim sistemine özgü objeleri da os modülü ile kullanılabilir, fakat bunları kullanarak kodun taşınabilirliği noktasında sıkıntı oluşturur.
- "Kullanabilirlik: Unix" notu işlevin Unix sistemlerinde yaygın uygulanabileceğini belirtir. Belirli bir işletim sistemi için kullanılabileceğini iddia etmez.
- "Kullanabilirlik: Unix" notlarımız çekirdeği unix olan sistemleri belirtir. Örneğin MAC Os x unix çekirdeği kullanır.
Not: Geçersiz ve erişimde sorun çıkarttığını düşündüğüm kodlamalarda OSError exception dan yararlanabiliriz.
exception os.error
os.name
İşletim sistemi bağımlık adını gösterir. Çıktıları şunlardır. 'posix', 'nt', 'os2', 'ce', 'java', 'riscos'.
Ayrıca aşağıdaki modüllere bakabilirsiniz
sys.platform platform bilgisi verir, os.uname() işletim sistemi hakkında bilgi verir.
platform modülü sistem kimlik için ayrıntılı denetim sağlar.
İşlem Parametreleri
Aşağıda bahsedeceğimiz fonksiyonlar ve veri öğeleri kullanıcı için bilgi sağlamak ve sürecin akışı için kullanılabilir.
os.environ
Dize halinde bütün sistem parametrelerinin map ini gösterir.
Örnek çıktı.
os.environ
{'XTERM_SHELL': '/bin/bash', 'HUSHLOGIN': 'FALSE', 'LOGNAME': 'huso', 'USER': 'huso', 'PATH': '/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games', 'XDG_VTNR': '1', 'HOME': '/home/huso', 'WINDOWPATH': '1', 'SSH_AGENT_PID': '1081', 'LANG': 'en_US.UTF-8', 'TERM': 'xterm', 'SHELL': '/bin/bash', 'XAUTHORITY': '/home/huso/.Xauthority', 'LANGUAGE': 'en_US:en', 'SHLVL': '2', 'DISPLAY': ':0', 'WINDOWID': '20971535', 'XDG_RUNTIME_DIR': '/run/user/1000', 'XTERM_VERSION': 'XTerm(312)', 'SSH_AUTH_SOCK': '/tmp/ssh-3zJ2cVdTUDYB/agent.1051', 'XTERM_LOCALE': 'en_US.UTF-8', 'XDG_SESSION_ID': '1', 'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-KTsAEEOcq0,guid=7f0303c1d9afd87a7c666fd3547eb8ca', '_': '/usr/bin/ipython', 'PWD': '/home/huso', 'MAIL': '/var/mail/huso', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:', 'XDG_SEAT': 'seat0'}
Erişim için getenv fonksiyonundan yararlanabilirsiniz.
os.getenv("HOME")
'/home/huso'
Eğer işletim sistemi platformunuz çevre ortamı bilgilerini değişmesini destekliyor ise putenv() fonksiyonunu kullanabilirsiniz. Mapi otomatik olarak düzenlemiş olacaktır.
Not:putenv() fonksiyonu doğrudan çağrıldığında os.environ değişmez.
Not: FreeBSD ve Mac OS X gibi bazı platformlarda environ bellek sızıntılarına neden olabilir.
Platformunuz unsetenv() işlevini destekliyorsa, bu eşleştirme ile unset ortam değişkenleri için öğeler silebilirsiniz. unsetenv() otomatik olarak çağrıldığında bir item, os.environ ve pop() veya clear() yöntemleri çağrıldığında silinir.
os.chdir(path)
İşletim sistemi üzerinde aktif pathe konumlanmamızı sağlar bir nevi konsolda yaptığımız cd komutunu tekrarlar.
os.fchdir(fd)
Örnek kullanımı aşağıdaki şekildedir.
#!/usr/bin/python
import os, sys
# ilk olarak /home/www/
os.chdir("/home/www/" )
# Ekrana aktif klasörü yazalım
print "Calisma yapilan klasör : %s" % os.getcwd()
# şimdi yeni klasörümüze geçelim "/tmp"
fd = os.open( "/tmp", os.O_RDONLY )
# os.fchdir() methodumuz ile klasörümüze geçelim
os.fchdir(fd)
# Çalışma klasörümüzü ekrana basalım.
print "Calisma yapilan klasör : %s" % os.getcwd()
# Açık olan klasörümüzü kapatalım.
os.close( fd )
os.getcwd()
Çalışılan klasörü gösterir.
os.ctermid()
Süreci kontrol eden terminal için karşılık gelen dosya adını döndürür.
Kullanabilirlik: Unix
Örnek çıktı
os.ctermid()
'/dev/tty'
os.getegid()
Geçerli sürecin etkin grup kimliğini döndürür.
Kullanabilirlik: Unix
os.geteuid()
Geçerli işlemin etkin kullanıcı kimliğini döndürür.
Kullanabilirlik: Unix
os.getgid()
Çalışan işlemin gerçek grup kimliğini döndürür.
Kullanabilirlik: Unix
os.getgroups()
Geçerli işlemle ilişkili tamamlayıcı grup kimlikleri listesini döndürür.
Kullanabilirlik: Unix
Örnek çıktı
os.getgroups()
[24, 25, 29, 30, 44, 46, 103, 1000]
Not: MAC OS x üzerinde getgroups() diğer unix platformlarından farklı davranabilir.
os.initgroups(username, gid)
Sistem initgroups() ile belirtilen kullanıcı adı üye ve belirtilen grup kimliği olduğu tüm grupların Grup erişim listesinde arar.
Kullanabilirlik: Unix
Not: Bu methotda bug mevcuttur. http://bugs.python.org/issue7333
Çözümü: https://gist.github.com/clayg/1755433 - https://bitbucket.org/ianb/pastescript/pull-request/3/fix-group-permissions-for-pastescriptserve/diff
os.getlogin()
Süreci kontrol eden terminalde giriş yapan kullanıcı adını döndürür. Çoğu zaman kullanıcı kim olduğunu öğrenmek için ortam değişkeni LOGNAME kullanmak daha yararlıdır ayrıca işlemin gerçek giriş adını görmek için pwd.getpwuid(os.getuid()) [0] kullanılmalıdır.
Kullanabilirlik: Unix
Root kullanıcısı ile giriş yapılan çıktılar.
import pwd
import os
print pwd.getpwuid(os.getuid())[0]
# root çıktısını verir
print os.getlogin()
# normal kullanıcı adının çıktısını verir.
os.getpgid(pid)
İşlem ile sürecin süreç grup kimliğini döndürür PID. PID 0 ise, çalışan sürecin süreç grup kimliği döner.
Kullanabilirlik: Unix
os.getpgrp()
Şu anki süreç grup kimliğini döndürür.
Kullanabilirlik: Unix
os.getpid()
Şu anki süreç kimliğini döndürür.
Kullanabilirlik: Unix
os.getppid()
Ebevynin 'parent' süreç kimliğini döndürür.
Kullanabilirlik: Unix
os.getresuid()
Geçerli sürecin gerçek, belirten bir tanımlama grubu (ruid, euid, suid) verilerini döndürür.
Kullanabilirlik: Unix
os.getresgid()
Geçerli sürecin (rgid, egid, sgid) gerçek, efektif, ve kayıtlı grup kimliklerini döndürür.
Kullanabilirlik: Unix
os.getuid()
Geçerli işlemin gerçek kullanıcı kimliğini döndürür.
Kullanabilirlik: Unix
os.getenv(varname[, value])
Eğer varsa Değişkenadı çevre değişken değeri veya değeri döndürür. None değeri varsayılan.
Kullanabilirlik: Unix, Windows
os.putenv(varname, value)
Değişken dize değeri adı yada adında ortam değişkenlerini ayarlar. Bu tür değişiklikleri çevreye 'environment' os.system(), popen() veya fork() ve execv() ile başlayan subprocesses etkiler.
Kullanabilirlik: Unix, Windows
os.setegid(egid)
Geçerli işlemin etkin grup kimliği tanımlanır.
Kullanabilirlik: Unix
os.seteuid(euid)
Geçerli işlemin etkin kullanıcı kimliğini belirler.
Kullanabilirlik: Unix
os.setgid(gid)
Geçerli sürecin grup kimliğini belirler.
Kullanabilirlik: Unix
os.setgroups(groups)
Sürecin gruplarıyla ilişkili tamamlayıcı grup kimliklerinin listesi ayarlar. Gruplar bir dizi olmalıdır, e her öğe bir grubu tanımlayan bir tamsayı olması gerekir. Bu işlem genellikle sadece root için kullanılabilir.
Kullanabilirlik: Unix
Not: Mac OS X, işetim sistemi tarafından tanımlanan etkin grup kimlikleri, genellikle en fazla 16 uzunluğunu aşamaz. getgroups() ve setgroups() fonksiyonları aynı grup listesi döndürmeyebilir.
os.setpgrp()
Sistem çağrısı setpgrp () veya setpgrp (0, 0) () sürüme bağlı olarak (varsa) uygulanır
Kullanabilirlik: Unix
os.setpgid(pid, pgrp)
Kimlikli süreci süreç grup kimliği ayarlamak için sistem çağrısı setpgid() ara PID numarası pgrp ile işlem grubuna set eder.
Kullanabilirlik: Unix
os.setregid(rgid, egid)
Geçerli işlemin gerçek ve etkin grup kimliği ayarlar.
Kullanabilirlik: Unix
os.setresgid(rgid, egid, sgid)
Geçerli işlemin gerçek, etkin ve kayıtlı grup kodlarına ayarlar.
Kullanabilirlik: Unix
os.setresuid(ruid, euid, suid)
Geçerli işlemin gerçek, etkin ve kayıtlı kullanıcı kimliklerini set eder.
Kullanabilirlik: Unix
os.setreuid(ruid, euid)
Geçerli işlemin gerçek ve etkin kullanıcı kimliklerini set eder.
Kullanabilirlik: Unix
os.getsid(pid)
Sistem çağrısı getsid() çağırır.
Kullanabilirlik: Unix
os.setsid()
Sistem çağrısı setsid() çağırır.
Kullanabilirlik: Unix
os.setuid(uid)
Geçerli işlemin kullanıcı kimliğini belirler.
Kullanabilirlik: Unix
os.strerror(code)
Hata koduna karşılık gelen hata iletisi döndürür. Strerror() bilinmeyen hata numarası verildiğinde NULL döndüğü platformlarında, ValueError ortaya çıkar.
Kullanabilirlik: Unix, Windows
os.umask(mask)
Sayısal geçerli izin maskesini ayarlamak ve önceki izin maskesini döndürür.
Kullanabilirlik: Unix, Windows
Kullanım Örnekleri 1
import os
oldmask = os.umask (022)
fh1 = os.open ("qq1.junk", os.O_CREAT, 0777)
fh2 = os.open ("qq2.junk", os.O_CREAT, 0022)
os.umask (oldmask)
os.close (fh1)
os.close (fh2)
-rwxr-xr-x 1 pax pax 0 Apr 24 11:11 qq1.junk
---------- 1 pax pax 0 Apr 24 11:11 qq2.junk
Kullanım Örnekleri 2
import os
oldmask = os.umask (022)
fh3 = open ("qq3.junk", "w")
os.umask (0)
fh4 = open ("qq4.junk", "w")
os.umask (oldmask)
fh3.close()
fh4.close()
-rw-r--r-- 1 pax pax 0 Apr 24 11:44 qq3.junk
-rw-rw-rw- 1 pax pax 0 Apr 24 11:44 qq4.junk
os.uname()
Geçerli işletim sistemini tanımlayan bir 5-başlık içeren bilgileri döndürür.
Kullanabilirlik: Unix
Çıktı örneği
('Linux',
'husonet',
'3.16-2-amd64',
'#1 SMP Debian 3.16.3-2 (2014-09-20)',
'x86_64')
os.unsetenv(varname)
Environment değişkenlerini unset yani silme işlemi yapar
Kullanabilirlik: Unix, Windows
Dosya oluşturma İşlemleri
Bu işlevler için ve yeni dosya nesneleri oluşturmak için. ( open() fonksiyonun'a bakabilirsiniz! )
os.fdopen(fd[, mode[, bufsize]])
Bu method için bir dosya tanıtıcısı bağlı bir açık dosya nesnesi döndürür.
Kullanabilirlik: Unix, Windows[/p]
Örnek kullanım.
#!/usr/bin/python
import os, sys
# Dosya açma işelmi
fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT )
# Dosyamizi açan file nesnemize fdopen methodumuza atayalım.
fo = os.fdopen(fd, "w+")
# Geçerli pointer konumumuz
print " I/O pointer konumu :%d" % fo.tell()
# Bir string yazalım
fo.write( "Python harika bir dildir.
Evet bu harika!
");
# Dosyanın başından itibaren okuyalım
os.lseek(fd, 0, 0)
str = os.read(fd, 100)
print "Okunan String : ", str
# Geçerli pointer konumumuz
print "I/O pointer konumu :%d" % fo.tell()
# Açık olan file kapatalım
fo.close()
print "Dosya kapatma başarılı!!"
Devam edecek...