Python モジュールの基本


モジュール。Yitong コードを使用して特定の機能を実装するコードのコレクション。

関数型プログラミングやプロセス指向プログラミングと同様に、関数型プログラミングは関数を完成させ、他のコードから呼び出すことができるため、コードの再利用性とコード間の結合が可能になります。複雑な関数の場合、完了するまでに複数の関数が必要になる場合があります (関数は異なる .py ファイルに存在する可能性があります)。n 個の .py ファイルで構成されるコードのコレクションはモジュールと呼ばれます。

例: os はシステム関連モジュール、file はファイル操作に関連するモジュール

モジュールには 3 種類あります:

  • カスタマイズされたモジュール
  • 組み込みモジュール
  • オープンソース モジュール

カスタム モジュール

1. モジュールの定義

シナリオ 1:

シナリオ 2:

## シナリオ 3:


##2. インポート モジュール


Python がますます広く使用されるようになった理由は、ある程度、使用可能なモジュールが多数ありますが、モジュールを使用したい場合はインポートする必要があります。モジュールをインポートするにはいくつかの方法があります:

import modulefrom module.xx.xx import xxfrom module.xx.xx import xx as rename  
from module.xx.xx import *

インポート モジュールは、実際には Python インタープリターに py ファイルを解釈するように指示します。

  • py ファイルをインポートすると、インタープリターは py ファイルを解釈します。
  • パッケージをインポートし、そしてインタプリタは py ファイルを解釈します。パッケージの下の __init__.py ファイル
#次に問題は、モジュールをインポートするときに、どのパスがベースとして使用されるかということです。つまり: sys.path

import sys
print sys.path
  
结果:

['E:\Python\\xc1\xb7\xcf\xb0', 'E:\Python', 'C:\Windows\SYSTEM32\python27.zip', 'D:\Install\Python\DLLs', 'D:\Install\Python\lib', 'D:\Install\Python\lib\plat-win', 'D:\Install\Python\lib\lib-tk', 'D:\Install\Python', 'D:\Install\Python\lib\site-packages']

sys.path パス リストに必要なパスがない場合は、sys.path.append('path') を通じて追加できます。
os モジュールを通じてさまざまなディレクトリを取得できます (例:
import sys
import os

pre_path = os.path.abspath('../')
sys.path.append(pre_path)

オープン ソース モジュール

1. ダウンロードしてインストール

ダウンロードとインストールには 2 つの方法があります:

yum 
pip
apt-get
...
下载源码
解压源码
进入目录
编译源码    python setup.py build
安装源码    python setup.py install

Note: ソース コードのインストールを使用する場合は、gcc コンパイルと Python 開発環境を使用する必要があるため、最初に実行する必要があります:
yum install gcc
yum install python-devel
或
apt-get python-dev

インストールが成功すると、モジュールは次のような sys.path 内のディレクトリに自動的にインストールされます。 # 2. モジュールのインポート
カスタムモジュールのインポート方法と同じ

##3. モジュール paramikoparamiko はリモート制御に使用するモジュールです。ファイル操作については、ファブリックおよび Ansible 内のリモート管理が paramiko を使用して実装されていることを言及する価値があります。

1.

/usr/lib/python2.7/site-packages/
をダウンロードしてインストールします

2. モジュールを使用します

# pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto
 
# 下载安装 pycrypto
wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz
tar -xvf pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1
python setup.py build
python setup.py install
 
# 进入python环境,导入Crypto检查是否安装成功
 
# 下载安装 paramiko
wget http://files.cnblogs.com/files/wupeiqi/paramiko-1.10.1.tar.gz
tar -xvf paramiko-1.10.1.tar.gz
cd paramiko-1.10.1
python setup.py build
python setup.py install
 
# 进入python环境,导入paramiko检查是否安装成功
#!/usr/bin/env python
#coding:utf-8

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.108', 22, 'alex', '123')
stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()
ssh.close();
import paramiko

private_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('主机名 ', 端口, '用户名', key)

stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()
ssh.close()
import os,sys
import paramiko

t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',password='123')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test.py','/tmp/test.py') 
t.close()


import os,sys
import paramiko

t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',password='123')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test.py','/tmp/test2.py')
t.close()

上传或者下载文件 - 通过用户名和密码

組み込みモジュール

1. os

はシステムレベルの操作を提供するために使用されます

import paramiko

pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)

t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',pkey=key)

sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test3.py','/tmp/test3.py') 

t.close()

import paramiko

pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)

t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',pkey=key)

sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test3.py','/tmp/test4.py') 

t.close()

上传或下载文件 - 通过密钥

2.sys

は、インタープリター関連の操作を提供するために使用されます。

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: ('.')
os.pardir  获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")  运行shell命令,直接显示
os.environ  获取系统环境变量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间

3. hashlib

は、暗号化関連の操作に使用され、md5 モジュールと sha モジュールを置き換えます。主に SHA1、SHA224、SHA256、SHA384、SHA512、MD5 アルゴリズムを提供します

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0)
sys.version        获取Python解释程序的版本信息
sys.maxint         最大的Int值
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]

SYS模块
import md5
hash = md5.new()
hash.update('admin')
print hash.hexdigest()
import sha

hash = sha.new()
hash.update('admin')
print hash.hexdigest()
上記の暗号化アルゴリズムは依然として非常に強力ですが、依然として欠陥があり、資格情報のスタッフィングによって元に戻される可能性があります。したがって、暗号化を実行する前に、暗号化アルゴリズムにカスタム キーを追加する必要があります。

import hashlib
 
# ######## md5 ########
 
hash = hashlib.md5()
hash.update('admin')
print hash.hexdigest()
 
# ######## sha1 ########
 
hash = hashlib.sha1()
hash.update('admin')
print hash.hexdigest()
 
# ######## sha256 ########
 
hash = hashlib.sha256()
hash.update('admin')
print hash.hexdigest()
 
 
# ######## sha384 ########
 
hash = hashlib.sha384()
hash.update('admin')
print hash.hexdigest()
 
# ######## sha512 ########
 
hash = hashlib.sha512()
hash.update('admin')
print hash.hexdigest()
は強力ではありませんか? Python には hmac モジュールもあります。これは、処理して暗号化するためのキーとコンテンツを内部的に作成します
import hashlib
 
# ######## md5 ########
 
hash = hashlib.md5('898oaFs09f')
hash.update('admin')
print hash.hexdigest()