2016-03-24 17 views
0

Bir nesne oluşturmak ve config dosyasında depolamak için python pickle kullanıyorum. Cron işi olmadan, betiği çalıştırabilir ve config.pkl oluşturabilirim. Ancak, bir kez cron işine koyduğumda ve config.pkl oluşturamıyorum, ancak "generateConfig çağırmak" günlüğü oluşturuldu. Dosya yürütme iznine sahiptir.cron job ile python turşusu sorunu

Aşağıda işlev ve cron işi vardır.

def generateConfig(): 
     print "calling generateConfig" 
     configDict = {"test1":"value1","test2":"value2"} 
     output = open('config.pkl','wb') 
     pickle.dump(configDict, output) 
     output.close 

crontab:

Eğer config.pkl için bir yol sağlayarak değiliz yana
00 05 * * * /user/bin/python ~/job/process.py 
+0

Python'un platformunuzda '/ user/bin' içinde olduğundan kesinlikle emin misiniz? Çoğu Linux'ta, genellikle/usr/bin'de bulunur. Ayrıca, cronjob'nin "generateConfig çağrısı" nı oluşturduğundan ve manuel çalıştırmadan oluşan bir kalıntı oluşturmayacağından kesinlikle emin misiniz? – alvits

+0

Merhaba @alvits, bu forumdaki yazım hatası. Ben çift kontrol ve cron iş/usr/bin/python – Tammy

cevap

0

, benim tahminim onu ​​kullanan kullanıcının ev dizine bu dosyayı dökümü oluyor olurdu; Eğer oraya konmuyorsa, sisteminizi aramayı deneyin. Hiçbir hata kaydedilmezse, dosyanın bir yerde olması muhtemeldir, sadece olmasını beklediğiniz yerde değil.

en azından Komut dosyasını yürütme denetimi sizdedir bir try/catch ve açıkça elleçleme veya günlük ya problemlerde (örneğin, dosya yazma) da bir istisna oluşturabilir şey sarmak için iyi bir uygulamadır; Bu durumda, bir kaynağı hazırlama girişiminde bulunduysanız, komut dosyanız bu dosya tanıtıcısını kapatmadan ölebilir. 'with open(...) as output:'u kullanmak iyi bir seçenektir.

+0

Merhaba kungphu, config.pkl için yol kodu zor olmalı? Çıktı = açık ('~/job/config.pkl', 'wb') denedim ama yine de ~/job dizininde bulamıyorum – Tammy

+0

İlgili kullanıcının ana dizini aradınız mı? Sabit kodlama ile başlamanızı öneririm, örneğin, 'open ('/tmp/config.pkl ',' wb ') 've dosyanın tmp'de görünüp görünmediğini görmek. Eğer öyleyse, büyük olasılıkla bir yol/yapılandırma problemidir ve ya göreceli bir yoldan ziyade mutlak bir şekilde kullanmak isteyeceksiniz. Değilse, yanlış giden başka bir şey var ve teşhis için daha fazla çıkış/hata yakalama olabilir. – kungphu