SORU
16 EYLÜL 2009, ÇARŞAMBA


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
16 EYLÜL 2009, ÇARŞAMBA


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • L- Crysis

    L- Crysis

    30 Aralık 2011