python
Jun 14

想必很多初次接触python的同学都会见到这样一个语句,if __name__ == "__main__":
那么这个语句到底是做什么用的呢?在解释之前,首先要声明的是,不管你是多么小白,你一定要知道的是:
1.python文件的后缀为.py;
2..py文件既可以用来直接执行,就像一个小程序一样,也可以用来作为模块被导入(比如360安全卫士,就是依靠一个个功能模块来实现的,好比360安全卫士本身框架是一个桌面,而上面的图标就是快捷方式,这些快捷方式所指向的就是这一个个功能模块)
3.在python中导入模块一般使用的是import
好了,在确定知道以上几点之后,就可以开始解释if __name__ == "__main__":这个语句了。
首先解释一下if,顾名思义,if就是如果的意思,在句子开始处加上if,就说明,这个句子是一个条件语句。学习if语句的使用是很简单的,当然想要真正灵活运用还需大量的实践。
接着是 __name__,__name__作为模块的内置属性,简单点说呢,就是.py文件的调用方式。
最后是__main__,刚才我也提过,.py文件有两种使用方式:作为模块被调用和直接使用。如果它等于"__main__"就表示是直接执行。
总结:在if __name__ == "__main__":之后的语句作为模块被调用的时候,语句之后的代码不执行;直接使用的时候,语句之后的代码执行。通常,此语句用于模块测试中使用。
示例:
 com/itlife365> cat pythonDemo.py
#!/usr/bin/python
#pythondemo
def pythonDemo():
        print "Test is running"

if __name__ == "__main__":#自运行时调用该程序块
        print "test of main is working"

if __name__ == "pythonDemo":#import时调用该程序块
        print "pythonDemo is invoked"
执行结果:
 com/itlife365>
 com/itlife365> python pythonDemo.py
test of main is working
 com/itlife365> python
Python 2.4.2 (#1, Jan 10 2008, 17:43:47)
[GCC 4.1.2 20070115 (prerelease) (SUSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> pythonDemo
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
NameError: name 'pythonDemo' is not defined
>>> import pythonDemo
pythonDemo is invoked
>>>

Jun 9

如何退出Python提示符
how-to-quit-python-tips
如果你使用的是Linux/BSD shell,那么按Ctrl-d退出提示符。
如果是在Windows命令行中,则按Ctrl-z再按Enter。

如果你需要某个Python函数或语句的快速信息帮助,那么你可以使用内建的help功能。尤其在你使用带提示符的命令行的时候,它十分有用。比如,运行help(str)——这会显示str类的帮助。str类用于保存你的程序使用的各种文本(字符串)。类将在后面面向对象编程的章节详细解释。
类似地,你可以获取Python中几乎所有东西的信息。使用help()去学习更多关于help本身的东西

Jun 7

python模块paramiko的上传下载和远程执行命令方法

用python实现远程登陆主机执行命令或通过sftp上传下载文件,有个很好的模块paramiko模块来演示这些功能,使用起来很方便,大家可学习一下。写了几个小程序,用于说明此模块的使用方法。
查看python的安装目录
$> which python
/usr/bin/python
1:连接远程linux主机并执行命令
前提条件:必须安装python和paramiko模块
pythonDemo.sh的内容如下:
#!/usr/bin/python    
import paramiko      
hostname='192.168.10.12'
username='root'
password='root' 
port=22   
paramiko.util.log_to_file('paramiko.log')             
s=paramiko.SSHClient()                    
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())             
s.connect(hostname = hostname,port=port,username=username, password=password)             
stdin,stdout,stderr=s.exec_command('free;df -h')             
print stdout.read()             
s.close()

执行结果如下:
$>chmod +x pythonDemo.sh
./pythonDemo.sh

             total       used       free     shared    buffers     cached    
Mem:       2074940    2057420      17520          0      42416    1867968
-/+ buffers/cache:     147036    1927904
Swap:      2096472        240    2096232
Filesystem            Size  Used Avail Use% Mounted on    
/dev/sda1              30G   12G   17G  42% /    
none                 1014M     0 1014M   0% /dev/shm    
/dev/sda3             2.0G  289M  1.6G  16% /var    
/dev/sdb1             135G   14G  115G  11% /data    
/dev/sdc1             135G  127G  880M 100% /data1    
/dev/sdd1             135G   99G   30G  78% /data2

2:连接远程linux主机上传下载文件(paramiko模块是用SFTP协议来实现的)
前提条件:必须安装python和paramiko,datetime,os模块
#!/usr/bin/python     
import paramiko,datetime,os    
hostname='192.168.0.102'
username='root'
password='abc123'
port=22
local_dir='/tmp/'
remote_dir='/tmp/test/'
try:    
    t=paramiko.Transport((hostname,port))             
    t.connect(username=username,password=password)             
    sftp=paramiko.SFTPClient.from_transport(t)     
    #files=sftp.listdir(dir_path)             
    files=sftp.listdir(remote_dir)             
    for f in files:                     
        print ''                
        print '#########################################'                
        print 'Beginning to download file  from %s  %s ' % (hostname,datetime.datetime.now())                   
        print 'Downloading file:',os.path.join(remote_dir,f)    
        sftp.get(os.path.join(remote_dir,f),os.path.join(local_dir,f))#下载                  
        #sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))#上传                    
        print 'Download file success %s ' % datetime.datetime.now()           
        print ''                
        print '##########################################' 
    t.close()    
except Exception:     
       print "connect error!"

执行结果:
还有好多用法,具体的可以看官方文档:http://www.lag.net/paramiko/docs/

如何没有安装对应的模块,运行将报错,比如第一个例子:
$>./pythonDemo.sh
Traceback (most recent call last):
  File "./pythonDemo.sh", line 2, in ?
    import paramiko
ImportError: No module named paramiko

来源参考网络
python-paramiko-upload-and-download--and-remote-execute-demo

分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]