2012-04-23 18 views
20

मान लिया जाये कि मैं एक दूरस्थ सर्वर पर फ़ाइलों को सूचीबद्ध करने के एक छोटी सी कार्य को परिभाषित:फैब्रिक कार्य के लिए कार्य निर्देशिका कैसे सेट करें?

from fabric.api import run, env 

env.use_ssh_config = True 

def list_files(): 
    run('ls') 

और मैं के साथ निष्पादित करें:

fab -H server list_files 

मैं कैसे आदेश मैं चल रहा हूँ के लिए काम निर्देशिका निर्दिष्ट कर सकते हैं , करने के अलावा:

run('cd /tmp && ls') 

जो मेरे लिए बहुत मूर्ख नहीं दिखता है?

अस्वीकरण: मैं अपने जीवन में पहली बार फैब्रिक को देख रहा हूं और मैं पाइथन के लिए बिल्कुल नया हूं।

+1

सुनिश्चित करें कि आप पर [ट्यूटोरियल] एक बार देख ले होना (http://docs.fabfile.org/en/1.4.1/tutorial.html), यह बहुत प्रश्न वहां शामिल है। – Morgan

उत्तर

37

उपयोग Context Manager cd:

from fabric.api import run, env 
from fabric.context_managers import cd 

env.use_ssh_config = True 

def list_files(): 
    with cd('/tmp'): 
     run('ls') 
+1

लेकिन अगर मैं एक ही निर्देशिका में चलाने के लिए ** मेरे 'रन' आदेशों में से ** ** चाहता हूं तो क्या होगा? क्या मुझे अपना पूरा fabfile 'cd()' के साथ 'में लपेटना होगा? क्या वहां कुछ नहीं है 'env.working_dir ='/my/dir''? – Dotl

संबंधित मुद्दे