天天看点

Python-执行系统命令执行系统命令shutil

os.system

os.spawn*

os.popen

popen2.*

commands.*

后面三个已经废弃,以上执行shell命令的相关的模块和函数的功能均在subprocess模块中实现,并提供了更加丰富的功能

执行命令,返回状态码。

shell = True ,允许shell命令是字符串形式(是使用系统自带的shell)

高级的文件、文件夹、压缩包处理模块

shutil.copyfileobj(fsrc,fdst,length)将文件内容拷贝到另一个文件中,length是每次读取多少拷贝

shutil.copyfile(src,dst)拷贝文件

尽拷贝权限,内容组用户均不变

创建压缩包并返回文件路径

shutil.make_archive(base_name,format….)

base_name:压缩包的文件名,也可以是压缩包的路径,当只是文件名时,则保存在当前目录,否则保存至指定路径

format:压缩包的种类 zip tar batar  gztar

root_dir: 要压缩的文件夹路径,默认是当前目录

实例

shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的

1

2

3

4

5

6

7

8

9

10

<code>import</code> <code>zipfile</code>

<code># 压缩</code>

<code>z</code><code>=</code> <code>zipfile.ZipFile(</code><code>'ll.zip'</code><code>,</code><code>'w'</code><code>)</code>

<code>z.write(</code><code>'test1.py'</code><code>)</code>

<code>z.write(</code><code>'test2.py'</code><code>)</code>

<code>z.close()</code>

<code># 解压</code>

<code>j</code><code>=</code> <code>zipfile.ZipFile(</code><code>'ll.zip'</code><code>,</code><code>'r'</code><code>)</code>

<code>j.extractall()</code>

<code>j.close()</code>

<code>import</code> <code>tarfile</code>

<code>tar</code><code>=</code> <code>tarfile.</code><code>open</code><code>(</code><code>'y.tar'</code><code>,</code><code>'w'</code><code>)</code>

<code>tar.add(</code><code>'/usr/local/1.zip'</code><code>,arcname</code><code>=</code><code>'1.zip'</code><code>)</code>

<code>tar.add(</code><code>'/usr/local/2.zip'</code><code>,arcname</code><code>=</code><code>'2.zip'</code><code>)</code>

<code>tar.close()</code>

<code>tar</code><code>=</code> <code>tarfile.</code><code>open</code><code>(</code><code>'y.tar'</code><code>,</code><code>'r'</code><code>)</code>

<code>tar.extractall()</code>

ConfigParser

用于对特定的配置进行操作,当前模块的名称在python3.x版本中变更为configparser

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

<code>#!/usr/bin/env python</code>

<code># coding:utf-8</code>

<code># 用于对特定的配置进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser。</code>

<code>import</code> <code>ConfigParser</code>

<code>config</code><code>=</code> <code>ConfigParser.ConfigParser()</code>

<code>config.read(</code><code>'goods.txt'</code><code>)</code>

<code>##########读操作######</code>

<code># 获取模块的名称</code>

<code>secs</code><code>=</code> <code>config.sections()</code>

<code>print</code> <code>secs</code>

<code># 结果:['section1', 'section2']</code>

<code># 获取指定模块的key值</code>

<code>options</code><code>=</code> <code>config.options(</code><code>'section1'</code><code>)</code>

<code>print</code> <code>options</code>

<code># 结果:['k1', 'k2']</code>

<code># 获取指定模块下的items</code>

<code>item_list</code><code>=</code> <code>config.items(</code><code>'section1'</code><code>)</code>

<code>print</code> <code>item_list</code>

<code># 结果:[('k1', 'v1'), ('k2', 'v2')]</code>

<code># 获取指定模块下的key的值</code>

<code>val</code><code>=</code> <code>config.get(</code><code>'section1'</code><code>,</code><code>'k2'</code><code>)</code>

<code>print</code> <code>val</code>

<code>#########写操作############</code>

<code># 删除一个section模块</code>

<code>sec</code><code>=</code><code>config.remove_section(</code><code>'car'</code><code>)</code>

<code>config.write(</code><code>open</code><code>(</code><code>'i.txt'</code><code>,</code><code>'w'</code><code>))</code>

<code># 添加section模块。查看一个section是否存在;不存在则添加</code>

<code>sec</code><code>=</code> <code>config.has_section(</code><code>'car1'</code><code>)</code>

<code>print</code> <code>sec</code><code># False:表示不存在</code>

<code>sec</code><code>=</code> <code>config.add_section(</code><code>'car1'</code><code>)</code>

<code>print</code> <code>sec</code><code># True: 表示不存在</code>

<code># 添加seection下面的key-value</code>

<code>config.</code><code>set</code><code>(</code><code>'car'</code><code>,</code><code>'k1'</code><code>,</code><code>111111111</code><code>)</code>

<code>config.write(</code><code>open</code><code>(</code><code>'1.txt'</code><code>,</code><code>"w"</code><code>))</code>

<code># 删除section下面的key值为baoma</code>

<code>config.remove_option(</code><code>'car'</code><code>,</code><code>'baoma'</code><code>)</code>

logging

用于便捷记录日志且线程安全的模块

<code>import</code> <code>logging</code>

<code>logging.basicConfig(filename</code><code>=</code><code>'1.log'</code><code>,</code>

<code>                    </code><code>format</code><code>=</code><code>'%(asctime)s - %(name)s - %(levelname)s - %(module)s - %(message)s'</code><code>,</code>

<code>                    </code><code>datefmt</code><code>=</code><code>'%Y-%m-%d %H:%M:%S %p'</code><code>,</code>

<code>                    </code><code># level=logging.CRITICAL,</code>

<code>                    </code><code>level</code><code>=</code><code>40</code><code>,</code>

<code>                    </code><code>)</code>

<code>logging.debug(</code><code>'debugdebugdebugdebugdebug'</code><code>)</code>

<code>logging.info(</code><code>'infoinfoinfoinfoinfoinfoinfo'</code><code>)</code>

<code>logging.warning(</code><code>'warningwarningwarningwarning'</code><code>)</code>

<code>logging.error(</code><code>'errorerrorerrorerrorerrorerror'</code><code>)</code>

<code>logging.critical(</code><code>'criticalcriticalcriticalcritical'</code><code>)</code>

<code>logging.log(</code><code>50</code><code>,</code><code>'asdfghjkl'</code><code>)</code>

解读:

1:filename创建日志文件,然后以追加的方式接收

2:format格式:时间-用户-日志级别-哪个模块的日志-日志信息

3:时间格式:2015-12-09 11:00:28 AM

4:日志级别:可以使用数字,也可以直接指定

日志级别对应表:

CRITICAL = 50

ERROR = 40

WARNING = 30

INFO = 20

DEBUG = 10

<code>                    </code><code>level</code><code>=</code><code>logging.DEBUG,</code>

<code>while</code> <code>True</code><code>:</code>

<code>    </code><code>option</code><code>=</code> <code>raw_input</code><code>(</code><code>"请输入数字"</code><code>)</code>

<code>    </code><code>if</code> <code>option.isdigit():</code>

<code>        </code><code>print</code> <code>"是数字"</code><code>,option</code>

<code>        </code><code>logging.info(</code><code>'孩子输入的是数字'</code><code>)</code>

<code>    </code><code>else</code><code>:</code>

<code>        </code><code>logging.error(</code><code>'孩子,你是不是傻'</code><code>)</code>

结果:

2015-12-09 13:23:39 PM - root - ERROR - test8 - 孩子,你是不是傻

2015-12-09 13:24:30 PM - root - ERROR - test8 - 孩子,你是不是傻

2015-12-09 13:24:31 PM - root - INFO - test8 - 孩子输入的是数字

2015-12-09 13:24:42 PM - root - INFO - test8 - 孩子输入的是数字

time datetime

时间相关的操作

时间有三种表示方式:

时间戳 1970年1月1日之后的秒 time.time()

格式化的字符串 2015-12-12 12:12

结构化时间 元组包含了:年、月、日、星期等 time.struct_time time.localtime()

<code>import</code> <code>time</code>

<code>import</code> <code>datetime</code>

<code>print</code> <code>time.time()</code>

<code># 1449631804.64</code>

<code>print</code> <code>time.strftime(</code><code>'%Y-%m-%d %H-%M-%S %p'</code><code>)</code>

<code># 默认是当前时间2015-12-09 11-04-30 AM</code>

<code>print</code> <code>time.localtime()</code>

<code># time.struct_time(tm_year=2015, tm_mon=12, tm_mday=9, tm_hour=11, tm_min=31, tm_sec=55, tm_wday=2, tm_yday=343, tm_isdst=0)</code>

<code>print</code> <code>time.strptime(</code><code>'2014-11-11'</code><code>,</code><code>'%Y-%m-%d'</code><code>)</code>

<code># 将格式化时间转成结构化时间</code>

<code># 日期到时间戳的转化</code>

<code>t</code><code>=</code> <code>datetime.datetime(</code><code>2015</code><code>,</code><code>11</code><code>,</code><code>14</code><code>,</code><code>14</code><code>,</code><code>14</code><code>)</code>

<code>print</code> <code>type</code><code>(</code><code>'t'</code><code>)</code><code># &lt;type 'str'&gt;</code>

<code>ti</code><code>=</code> <code>time.mktime(t.timetuple())</code>

<code>print</code> <code>ti </code><code># 1447481640.0</code>

<code># 时间戳到日期的转化</code>

<code>tt</code><code>=</code> <code>time.localtime()</code>

<code>print</code> <code>tt</code>

<code>timestr</code><code>=</code> <code>time.strftime(</code><code>'%Y-%m-%d %H:%M:%S'</code><code>)</code>

<code>print</code> <code>timestr</code>

<code># 2015-12-09 13:53:23</code>

re

Python-执行系统命令执行系统命令shutil

re模块是用于python的正则表达式的操作

字符:

.匹配除换行符意外的任意字符

\w匹配字母或数字或下划线或汉字

\s匹配任意的空白符

\d匹配数字

\b匹配单词的开始或结束

^匹配字符串的开始

$匹配字符串的结束

*重复零次或更多次

+重复一次或更多次

?重复零次或一次

{n}重复n次

{n,}重复n次或更多次

{n,m}重复n到m次

1:match(pattern,string,flahs=0)

从起始位置开始根据模型去字符串中匹配指定内容,匹配单个

正则表达式

要匹配的字符串

标志位,用于控制正则表达式的匹配方式

2:search(pattern,string,flahs=0)

根据模版去字符串中匹配指定内容,匹配单个

3:group和groups

返回一个或多个子组。如果参数为一个,就返回一个子串;如果参数有多个,就返回多个子串组成的元组

Python-执行系统命令执行系统命令shutil
Python-执行系统命令执行系统命令shutil
Python-执行系统命令执行系统命令shutil
Python-执行系统命令执行系统命令shutil

4321fdsa4132

4321

fdsa

4132

('4321', 'fdsa', '4132')

4:findall(pattern,string,flahs=0)

match和search只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用findall

['4321', '2', '4132']

5:sub(pattern,repl,string,count=0,flag=0)用于替换匹配的字符串

6:split(pattern,string,maxsplit=0,flags=0)

根据指定匹配进行分组

Python-执行系统命令执行系统命令shutil
Python-执行系统命令执行系统命令shutil
Python-执行系统命令执行系统命令shutil
Python-执行系统命令执行系统命令shutil

random

随机数

它会自动生成四位数字字母组合的字符串

Python-执行系统命令执行系统命令shutil
Python-执行系统命令执行系统命令shutil
Python-执行系统命令执行系统命令shutil
Python-执行系统命令执行系统命令shutil

<code> </code> 

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************

本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/5569976.html,如需转载请自行联系原作者