CSIC_716_20191118一般的な使用のサブプロセスモジュール、再、ロギングは、自動テストを防ぐため、理論上のパケット]

サブプロセスモジュール

あなたは、端末のpythonコードを介して、オペレーティングシステムにコマンドを送信することができ、戻り結果が得られてもよいです。

import subprocess

str = input('>>>请输入命令')
# 使用Popen方法,需要四个参数:输入的内容;shell;stdout和stderr的默认值都是subprocess.PIPE(子进程的管道值,最大64kb)
sub_obj = subprocess.Popen(str, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
#正确的话,输出stdout的内容,需要按照操作系统默认编码方式解码
success = sub_obj.stdout.read().decode('gbk')
if success:
    print(success)
#错误的话,输出stderr的内容
error = sub_obj.stderr.read().decode('gbk')
if error:
    print(error)

reモジュール

正規表現:

正規表現(正規表現)が独立した技術であり、多くの言語は、正規表現をサポートしています。

正規表現は、重要なメタ文字です。

>> \    将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符
>> ^    匹配输入字符串开始的位置(以什么开始)
>> $    匹配输入字符串结束的位置(以什么结束)
>> *    匹配前面的表达式0次或多次,通常和别的元字符搭配使用
>> +    匹配前面的表达式1次或多次,通常和别的元字符搭配使用
>> ?    匹配前面的表达式0次或1次,
>> {n}  匹配确定的n次,即 要匹配几次才终止,搭配使用。
>> {n,} 至少匹配n次,
>>{n,m} 最少匹配n次,最多匹配m次,其中n<=m
>> ?    非贪婪匹配,匹配到就不找了,不贪。
>> .    匹配除换行符以外的所有的字符  
>>( )   获取括号中的匹配内容
>>x|y   匹配x或者y
>>[xyz] 字符集合,匹配xyz中的任何一个字符
>>[^xyz]    匹配除xyz以外的所有字符
>>[a-z] 字符范围,匹配a-z之间的任意字符
>>[^a-z]    匹配范围以外的任意字符
>>\b    匹配字符的边界,er\b  可以匹配以er结尾的单词
>>\B    匹配非字符边界,er\B 可以匹配到单词中的er,但是匹配不到以er结尾的
>>\w    (小写)匹配字母数字及下划线
>>\W    (大写)匹配非字母数字及下划线
>>\d    匹配任意数字
>>\D    匹配任意非数字 
>>\n    匹配一个换行符 换行
>>\t    匹配一个制表符 空格

Pythonでは、それが唯一のモジュールの再正規表現で使用されるべきです

シナリオ:爬虫類、データ解析、入力の正当性を検証する(ユーザ名、電話番号等)

描述一波((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))

より重要な方法の再モジュールの三種類:

findAll()、あなたは結果が返さ取得するには、すべての文字を一致させることができ、返される結果はリストが

findAll(正規表現検証すべき文字マッチングパターン)、パターンマッチング:re.Sグローバルマッチ

検索()、成功した結論、遅くとも試合後の結果を得るために、文字を一致させることができます。

それは内容を希望する場合、一致()、試合の最初から一致する文字は、Noneを返します。

ロギングモジュール

アプリケーション:

図1は、ストレージ・アドレス定義のログ logfile_path:最初見つける(作成)ログ保存ディレクトリは、ログスプライシング自身の絶対パスは、logfile_pathログの絶対パスです。

2、辞書コピーログの設定LOGGING_DIC

3、コールログ生成方法

def get_log(user_type):
    logging.config.dictConfig(LOGGING_DIC)  # 加载配置字典
    logger = logging.getLogger(user_type)  # 传参数得到结果
    return logger  # 返回结果

logger = get_log('user_type')
logger.info('日志消息')

防止自動テスト実行

多くの.pyファイルは、パッケージ内にあり、すべての機能ではないので、追加する必要

if __name__ =='__main__':  

非の場合はa.pyファイル書き込み機能文の通常の実行、およびそれが起こる再びインポートするモジュールとしてb.pyファイルを、今回は注意する必要があり、

我々は、文a.pyファイル内の上記のステートメントが正常に実行される前に増加しなければなりません。インポート時にそれ以外の場合は、予期しないコンテンツの出現で、その結果、実行されます。

# func()
# __name__属于模块名称空间中的一个名字
# 当我们执行该模块时就会产生
在自身执行的时候,__name__ = __main__
在被其他模块调用时,__name__ = 包.模块名

理論パッケージ

何が起こったかのパッケージをインポートする場合:

当包被导入的时候,会以包中的__init__.py来产生一个名称空间。。
执行__init__.py文件时,会将__init__.py中的所有名字加载到名称空间中。-->init.py自身文件中的名字
接着,包下所有的模块的名字都会加载到__init__.py产生的名称空间中。-->init.py统辖的模块的名字
导入模块指向的名称空间其实就是__init__.py产生的名称空间中。

おすすめ

転載: www.cnblogs.com/csic716/p/11891879.html