python: komut komut'ın kendi dizini çalışma dizini Değiştirin
Crontab gelen bir python shell her dakika çalıştırın:
* * * * * /home/udi/foo/bar.py
/home/udi/foo
bazı gerekli alt dizinleri /home/udi/foo/log
/home/udi/foo/bar.py
anlamına gelir /home/udi/foo/config
, gibi.
Sorun crontab
farklı bir çalışma dizini, komut dosyası çalışır, ./log/bar.log
açmaya çalışırken başarısız olur.
Güzel bir şekilde script script kendi dizini çalışma dizini değiştirmek için söyleyecek var mı? Herhangi bir komut dosyası konumu için çalışacak bir çözüm fantezi, açıkça nerede senaryoyu anlatmayı yeğlerim.
DÜZENLEME:
os.chdir(os.path.dirname(sys.argv[0]))
En kompakt çözüm. Cevaplar ve açıklamalar için teşekkürler!
CEVAP
Bu göreli yollar açılıyor çalışacak o kadar geçerli çalışma dizini değiştirin
import os
os.chdir("/home/udi/foo")
Ancak, Python betiği eğer senaryo yazarken ne olacağını bilmiyorsun bile bulunan, her neyse içine değiştirmek için nasıl istedi. Bunu yapmak için, os.path
özelliklerini kullanabilirsiniz:
import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
Bu komut dosyası dosya adını alır, mutlak bir yol dönüştürür, bu yolun dizine ayıklar, bu dizine değiştirir.
Nasıl komut dizin için geçerli çalışma...
Nasıl düzgün bir Python komut dosyası ...
Bir şekilde bir komut gıt kök dizini d...
Nasıl Python ile geçerli çalışma dizin...
Nasıl bir dizini Windows komut satırın...