跳到主要内容

97 篇博文 含有标签「python」

查看所有标签

可爱的python中的一个与递归相关的小问题

· 阅读需 2 分钟

可爱的python一书中有一个练习题,是在一个目录中查找特定扩展名的文件,并且读取里面的内容,然后用户输入一个关键词,在这些文件中进行搜索,如果找到后就把这一行内容打印出来,他提出的问题是如果里面还有目录,目录里面还有更深的目录,解决这个问题,我想到的只能是递归。。。

#coding:utf-8
import os,sys

def cdGrep(keyword,filepath):
filelist = os.listdir(filepath)

for cdc in filelist:
if os.path.isdir(cdc):
filepath2 = os.path.join(filepath,cdc)
cdGrep(keyword,filepath2)

elif '.txt' in cdc:
# print filepath+cdc
f = open(filepath+''+ cdc)
for line in f.readlines():
linelower = line.lower()
if keyword in linelower:

print '您查找的关键词在%s中找到'% (filepath+''+cdc)
print line
f.close()

if __name__ == '__main__':
keword = raw_input('请输入想要查询的关键字')
pw = os.getcwd()
cdGrep(keword,pw)

通过一个python小脚本来下载最新的360杀毒安装程序

· 阅读需 1 分钟

小脚本很简单,主要是练习一下正则匹配,与简单的urllib库的应用

#coding: utf8
import urllib,re
import os

def getLastinstall():

page = urllib.urlopen(r'http://sd.360.cn/download_center.html')
html = page.read()
page.close()
rematch = r'http://down.360.cn/360sd/360sd_se_(.*?)exe'
replusmatch = r'http://down.360.cn/360sd/360sd_plus_(.*?)exe'
stdname = '360sd_'+(str(re.compile(rematch).findall(html)[0]))+'exe'
downurlstd = r'http://down.360.cn/360sd/360sd_'+(str(re.compile(rematch).findall(html)[0]))+'exe'
powname = '360sd_plus_'+(str(re.compile(replusmatch).findall(html)[0]))+'exe'
downurlpow = r'http://down.360.cn/360sd/360sd_plus_'+(str(re.compile(replusmatch).findall(html)[0]))+'exe'
localpath = os.getcwd()+r'/installpack'
if not (os.path.isfile(stdname) and os.path.isfile(powname)):
if not os.path.isdir('installpack'):
os.makedirs('installpack')
urllib.urlretrieve(downurlstd,localpath+'/'+stdname)
urllib.urlretrieve(downurlpow,localpath+'/'+powname)
else:
print '目录中已经是线上最新版杀毒安装程序'

if __name__ =='__main__':
getLastinstall()

(转)Python 参数知识(变量前加星号的意义)

· 阅读需 3 分钟

原文地址:http://blog.csdn.net/qinyilang/article/details/5484415

**过量的参数

**在运行时知道一个函数有什么参数,通常是不可能的。另一个情况是一个函数能操作很多对象。更有甚者,调用自身的函数变成一种api提供给可用的应用。

对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数。这些“额外”的参数下一步再解释。

注意args和kwargs只是python的约定。任何函数参数,你可以自己喜欢的方式命名,但是最好和python标准的惯用法一致,以便你的代码,其他的程序员也能轻松读懂。 ** 位置参数**

在参数名之前使用一个星号,就是让函数接受任意多的位置参数。

>>> def multiply(*args):
...     total = 1
...     for arg in args:
...         total *= arg
...     return total
...
>>> multiply(2, 3)
6
>>> multiply(2, 3, 4, 5, 6)
720

Python中用print方法向文件中写入内容

· 阅读需 1 分钟

一个小功能,我就是想用print功能实现,不想用write

import os

os.chdir("/usr/tem")
char="my name is yangyanxing"
f = open("test.txt","w")
print >>f,char

但是Python3中还可以用以下的方式

import os

os.chdir("/usr/tem")
char="my name is yangyanxing"
f = open("test.txt","w")
print(char,file=f)

(转)Python装饰器与面向切面编程

· 阅读需 8 分钟

本文用了一个很通俗的例子还一步步的让读者理解Python中的装饰器的概念

原文地址:http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html

今天来讨论一下装饰器。装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

一个Python的小例子来理解字典与while循环

· 阅读需 3 分钟

现在要实现一个需求,弹出一个界面,可以让用户选择是新建用户还是登录已有账户,或者直接退出,在登录账户的时候,密码输入错误不能超过三次,超过三次要回到主界面,用户名输入‘q’的时候也可以退出并回到主界面