设为首页 收藏本站
查看: 796|回复: 0

[经验分享] python tips(2)

[复制链接]

尚未签到

发表于 2017-4-22 12:21:58 | 显示全部楼层 |阅读模式
  1. python Popen的具体解释是:打开一个命令或从管道返回值。
  从python2.4开始,就可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值,subprocess意在替代其它几个老的模块或函数。如,os.system, os.spawn*, os.popen*, popen2.*, commands.*
  下面是使用subprocess的例子。

import win32com.client
from subprocess import Popen
import time
shell = win32com.client.Dispatch("WScript.Shell")
shell.Run("notepad")
time.sleep(5)
Popen("taskkill /f /im notepad.exe")
Popen("calc")
time.sleep(5)
Popen("taskkill /f /im calc.exe")
  

2. python新建进程用os.fork函数,但它只在POSIX系统上可用,在Windows版的python中,os模块没有定义os.fork函数,相反,Windows程序员用多线程编程技术(multiprocessing)来完成并发任务。
  关于python fork:
  1)创建管道 2)创建子进程
  子进程:
  1)需要关闭管道读端 2)开始执行 3)向写端写结果 4)进程死亡
  父进程:
  1)关闭管道写端 2)从读端读取数据直到子进程死亡或者关闭 3)调用waitpid方法确保子进程已经被撤销(在FreeBSD中不这么做子进程永远不会死亡) 4)进程输出
  3. map, reduce, filter的使用例子。

def map_func(lis):
return lis + 1
def reduce_func(li, lis):
return li + lis
def filter_func(lis):
if lis % 2 == 0:
return True
else:
return False
lis = [1, 2, 3, 4, 5]
map_I = map(map_func, lis)
reduce_I = reduce(reduce_func, lis)
filter_I = filter(filter_func, lis)
print map_I
print reduce_I
print filter_I
  输出结果为:

>>>
[2, 3, 4, 5, 6]
15
[2, 4]
>>>
  4. python 冒泡排序的两种方法。
  方法一:

array = [1, 2, 5, 3, 6, 8, 4]
for i in range(len(array) - 1, 1, -1):
#print i
for j in range(0, i):
#print j
if array[j] > array[j + 1]:
array[j], array[j + 1] = array[j + 1], array[j]
print array
  方法二:

array1 = [1, 2, 5, 3, 6, 8, 4]
array1.sort(cmp = None, key = None, reverse = False)
print array1
  结果如下:

>>>
[1, 2, 3, 4, 5, 6, 8]
[1, 2, 3, 4, 5, 6, 8]
>>>
  5. 巧用python输出。

array = [1, 2, 5, 3, 6, 8, 4]
#       (0, 1, 2, 3, 4, 5, 6)
#       (-7,-6,-5,-4,-3,-2,-1)
print array[::2]
print array[2::]
print array[::-1]
print array[0:]
print array[:-1]
print array[3:-3]
  结果如下:

>>>
[1, 5, 6, 4]
[5, 3, 6, 8, 4]
[4, 8, 6, 3, 5, 2, 1]
[1, 2, 5, 3, 6, 8, 4]
[1, 2, 5, 3, 6, 8]
[3]
>>>
  6. python的函数可以返回多个值,例子如下。

def test(num = 0):
return(num, num + 1)
def hello(num = 0):
if num == 0:
pass
else:
return num + 2
num1, num2 = test(1)
num4 = hello(1)
num3 = hello(0)
print num1, num2
print num3, num4
  结果如下:

>>>
1 2
None 3
>>>
  

7. python遍历字典元素时字典元素的顺序通常没有定义,换句话说,迭代的时候,字典中的键和值都保证被处理,但是处理顺序不确定,如果顺序很重要的话,可以将键值保存在单独的列表中,例如迭代前进行排序。
  8. cmd命令"netsh wlan export profile"可以让用户将一个在Windows图形用户界面中创建的无线配置文件导出到一个XML文件中,如此,便可将其导入到其它计算机中或进行备份。
  附:推荐几本学习Python的书籍,也供备查。
  1. Learning Python, O'Reilly, Introduction
  2. Pratical Python, APress, 部分实用程序
  3. Python Standard Library, Fredrik Lundh, 模块实例
  4. Python Cookbook, (第2版)中文版, O'Reilly, 人邮, 进阶

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-367768-1-1.html 上篇帖子: 【汇总】python基础 下篇帖子: Python 学习入门(0)—— 简明教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表