[size=13.3333px]起始位置:0-文件头,默认值;1-当前位置;2-文件尾
[size=13.3333px]f.close() 关闭文件
[size=13.3333px]要进行读文件操作,只需要把模式换成'r'就可以,也可以把模式为空不写参数,也是读的意思,因为程序默认是为'r'的。 [size=13.3333px]>>>f = open('a.txt', 'r') [size=13.3333px]>>>f.read(5) [size=13.3333px]'hello' [size=13.3333px]read( )是读文件的方法,括号内填入要读取的字符数,这里填写的字符数是5,如果填写的是1那么输出的就应该是‘h’。 [size=13.3333px]打开文件文件读取还有一些常用到的技巧方法,像下边这两种: [size=13.3333px]1、read( ):表示读取全部内容
[size=13.3333px]2、readline( ):表示逐行读取
[size=13.3333px]一、用Python写一个列举当前目录以及所有子目录下的文件,并打印出绝对路径
[size=13.3333px]#!/usr/bin/env python [size=13.3333px]import os [size=13.3333px]for root,dirs,files in os.walk('/tmp'): [size=13.3333px] for name in files: [size=13.3333px] print (os.path.join(root,name))
[size=13.3333px]os.walk() [size=13.3333px]原型为:os.walk(top, topdown=True, onerror=None, followlinks=False)
[size=13.3333px]我们一般只使用第一个参数。(topdown指明遍历的顺序)
[size=13.3333px]该方法对于每个目录返回一个三元组,(dirpath, dirnames, filenames)。 [size=13.3333px]第一个是路径,第二个是路径下面的目录,第三个是路径下面的非目录(对于windows来说也就是文件)
[size=13.3333px]os.listdir(path)
[size=13.3333px]其参数含义如下。path 要获得内容目录的路径
[size=13.3333px]二、写程序打印三角形
[size=13.3333px]#!/usr/bin/env python [size=13.3333px]input = int(raw_input('input number:')) [size=13.3333px]for i in range(input): [size=13.3333px] for j in range(i): [size=13.3333px] print '*', [size=13.3333px] print '\n'
[size=13.3333px]三、猜数器,程序随机生成一个个位数字,然后等待用户输入,输入数字和生成数字相同则视为成功。成功则打印三角形。失败则重新输入(提示:随机数函数:random)
[size=13.3333px]#!/usr/bin/env python [size=13.3333px]import random [size=13.3333px]while True: [size=13.3333px] input = int(raw_input('input number:')) [size=13.3333px] random_num = random.randint(1, 10) [size=13.3333px] print input,random_num [size=13.3333px] if input == random_num: [size=13.3333px] for i in range(input): [size=13.3333px] for j in range(i): [size=13.3333px] print '*', [size=13.3333px] print '\n' [size=13.3333px] else: [size=13.3333px] print 'please input number again'
[size=13.3333px]四、请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为2013-09-23.log, 并且把磁盘的使用情况写到到这个文件中。
[size=13.3333px]#!/usr/bin/env python [size=13.3333px]#!coding=utf-8 [size=13.3333px]import time [size=13.3333px]import os [size=13.3333px]new_time = time.strftime('%Y-%m-%d')
[size=13.3333px]disk_status = os.popen('df -h').readlines()
[size=13.3333px]str1 = ''.join(disk_status)
[size=13.3333px]f = file(new_time+'.log','w')
[size=13.3333px]f.write('%s' % str1) [size=13.3333px]f.flush() [size=13.3333px]f.close()
[size=13.3333px]五、统计出每个IP的访问量有多少?(从日志文件中查找) [size=13.3333px]#!/usr/bin/env python [size=13.3333px]#!coding=utf-8 [size=13.3333px]list = [] [size=13.3333px]f = file('/tmp/1.log') [size=13.3333px]str1 = f.readlines() [size=13.3333px]f.close() [size=13.3333px]for i in str1: [size=13.3333px] ip = i.split()[0]
[size=13.3333px] list.append(ip)
[size=13.3333px]list_num = set(list)
[size=13.3333px]for j in list_num: [size=13.3333px] num = list.count(j) [size=13.3333px] print '%s : %s' %(j,num)
[size=13.3333px]1. 写个程序,接受用户输入数字,并进行校验,非数字给出错误提示,然后重新等待用户输入。 [size=13.3333px]2. 根据用户输入数字,输出从0到该数字之间所有的素数。(只能被1和自身整除的数为素数)
[size=13.3333px]#!/usr/bin/env python [size=13.3333px]#coding=utf-8 [size=13.3333px]import tab [size=13.3333px]import sys [size=13.3333px]while True: [size=13.3333px] try: [size=13.3333px] n = int(raw_input('请输入数字:').strip()) [size=13.3333px] for i in range(2, n + 1): [size=13.3333px] for x in range(2, i): [size=13.3333px] if i % x == 0: [size=13.3333px] break [size=13.3333px] else: [size=13.3333px] print i [size=13.3333px] except ValueError: [size=13.3333px] print('你输入的不是数字,请重新输入:') [size=13.3333px] except KeyboardInterrupt: [size=13.3333px] sys.exit('\n')
[size=13.3333px]python练习 抓取web页面
[size=13.3333px]from urllib import urlretrieve [size=13.3333px]def firstNonBlank(lines): [size=13.3333px] for eachLine in lines: [size=13.3333px] if not eachLine.strip(): [size=13.3333px] continue [size=13.3333px] else: [size=13.3333px] return eachLine [size=13.3333px]def firstLast(webpage): [size=13.3333px] f=open(webpage) [size=13.3333px] lines=f.readlines() [size=13.3333px] f.close [size=13.3333px] print firstNonBlank(lines), #调用函数 [size=13.3333px] lines.reverse() [size=13.3333px] print firstNonBlank(lines), [size=13.3333px]def download(url= 'http://search.51job.com/jobsearch/advance_search.PHP',process=firstLast): [size=13.3333px] try: [size=13.3333px] retval = urlretrieve(url) [0] [size=13.3333px] except IOError: [size=13.3333px] retval = None [size=13.3333px] if retval: [size=13.3333px] process(retval) [size=13.3333px]if __name__ == '__main__': [size=13.3333px] download()
[size=13.3333px]Python中的sys.argv[]用法练习
[size=13.3333px]#!/usr/bin/python [size=13.3333px]# -*- coding:utf-8 -*- [size=13.3333px]import sys [size=13.3333px]def readFile(filename): [size=13.3333px] f = file(filename) [size=13.3333px] while True: [size=13.3333px] fileContext = f.readline() [size=13.3333px] if len(fileContext) ==0: [size=13.3333px] break; [size=13.3333px] print fileContext [size=13.3333px] f.close() [size=13.3333px]if len(sys.argv) < 2: [size=13.3333px] print "No function be setted." [size=13.3333px] sys.exit()
[size=13.3333px]if sys.argv[1].startswith("-"):
[size=13.3333px] option = sys.argv[1][1:]
[size=13.3333px] if option == 'version': [size=13.3333px] print "Version1.2" [size=13.3333px] elif option == 'help': [size=13.3333px] print "enter an filename to see the context of it!" [size=13.3333px] else: [size=13.3333px] print "Unknown function!" [size=13.3333px] sys.exit() [size=13.3333px]else: [size=13.3333px] for filename in sys.argv[1:]: [size=13.3333px] readFile(filename)
[size=13.3333px]python迭代查找目录下文件
[size=13.3333px]#两种方法 [size=13.3333px]#!/usr/bin/env python [size=13.3333px]import os
[size=13.3333px]dir='/root/sh' [size=13.3333px]''' [size=13.3333px]def fr(dir): [size=13.3333px] filelist=os.listdir(dir) [size=13.3333px] for i in filelist: [size=13.3333px] fullfile=os.path.join(dir,i) [size=13.3333px] if not os.path.isdir(fullfile): [size=13.3333px] if i == "1.txt": [size=13.3333px] #print fullfile [size=13.3333px] os.remove(fullfile) [size=13.3333px] else: [size=13.3333px] fr(fullfile)
[size=13.3333px]''' [size=13.3333px]''' [size=13.3333px]def fw()dir: [size=13.3333px] for root,dirs,files in os.walk(dir): [size=13.3333px] for f in files: [size=13.3333px] if f == "1.txt": [size=13.3333px] #os.remove(os.path.join(root,f)) [size=13.3333px] print os.path.join(root,f) [size=13.3333px]'''
[size=13.3333px]一、ps 可以查看进程的内存占用大小,写一个脚本计算一下所有进程所占用内存大小的和。 [size=13.3333px](提示,使用ps aux 列出所有进程,过滤出RSS那列,然后求和)
[size=13.3333px]#!/usr/bin/env python [size=13.3333px]#!coding=utf-8 [size=13.3333px]import os [size=13.3333px]list = [] [size=13.3333px]sum = 0 [size=13.3333px]str1 = os.popen('ps aux','r').readlines() [size=13.3333px]for i in str1: [size=13.3333px] str2 = i.split() [size=13.3333px] new_rss = str2[5] [size=13.3333px] list.append(new_rss) [size=13.3333px]for i in list[1:-1]: [size=13.3333px] num = int(i) [size=13.3333px] sum = sum + num [size=13.3333px]print '%s:%s' %(list[0],sum)
[size=13.3333px]写一个脚本,判断本机的80端口是否开启着,如果开启着什么都不做,如果发现端口不存在,那么重启一下httpd服务,并发邮件通知你自己。脚本写好后,可以每一分钟执行一次,也可以写一个死循环的脚本,30s检测一次。
[size=13.3333px]#!/usr/bin/env python [size=13.3333px]#!coding=utf-8 [size=13.3333px]import os [size=13.3333px]import time [size=13.3333px]import sys [size=13.3333px]import smtplib [size=13.3333px]from email.mime.text import MIMEText [size=13.3333px]from email.MIMEMultipart import MIMEMultipart
[size=13.3333px]def sendsimplemail (warning): [size=13.3333px] msg = MIMEText(warning) [size=13.3333px] msg['Subject'] = 'python first mail' [size=13.3333px] msg['From'] = 'root@localhost' [size=13.3333px] try: [size=13.3333px] smtp = smtplib.SMTP() [size=13.3333px] smtp.connect(r'smtp.126.com') [size=13.3333px] smtp.login('要发送的邮箱名', '密码') [size=13.3333px] smtp.sendmail('要发送的邮箱名', ['要发送的邮箱名'], msg.as_string()) [size=13.3333px] smtp.close() [size=13.3333px] except Exception, e: [size=13.3333px] print e
[size=13.3333px]while True: [size=13.3333px] http_status = os.popen('netstat -tulnp | grep httpd','r').readlines() [size=13.3333px] try: [size=13.3333px] if http_status == []: [size=13.3333px] os.system('service httpd start') [size=13.3333px] new_http_status = os.popen('netstat -tulnp | grep httpd','r').readlines() [size=13.3333px] str1 = ''.join(new_http_status) [size=13.3333px] is_80 = str1.split()[3].split(':')[-1] [size=13.3333px] if is_80 != '80': [size=13.3333px] print 'httpd 启动失败' [size=13.3333px] else: [size=13.3333px] print 'httpd 启动成功' [size=13.3333px] sendsimplemail(warning = "This is a warning!!!")#调用函数 [size=13.3333px] else: [size=13.3333px] print 'httpd正常' [size=13.3333px] time.sleep(5) [size=13.3333px] except KeyboardInterrupt: [size=13.3333px] sys.exit('\n')
[size=13.3333px]#!/usr/bin/python [size=13.3333px]#-*- coding:utf-8 -*- [size=13.3333px]#输入这一条就可以在Python脚本里面使用汉语注释!此脚本可以直接复制使用;
[size=13.3333px]while True: #进入死循环 [size=13.3333px] input = raw_input('Please input your username:') [size=13.3333px]#交互式输入用户信息,输入input信息; [size=13.3333px] if input == "wenlong": [size=13.3333px]#如果input等于wenlong则进入此循环(如果用户输入wenlong) [size=13.3333px] password = raw_input('Please input your pass:') [size=13.3333px]#交互式信息输入,输入password信息; [size=13.3333px] p = '123' [size=13.3333px]#设置变量P赋值为123 [size=13.3333px] while password != p: [size=13.3333px]#如果输入的password 不等于p(123), 则进此入循环 [size=13.3333px] password = raw_input('Please input your pass again:') [size=13.3333px]#交互式信息输入,输入password信息; [size=13.3333px] if password == p: [size=13.3333px]#如果password等于p(123),则进入此循环 [size=13.3333px] print 'welcome to select system!' #输出提示信息; [size=13.3333px] while True: [size=13.3333px]#进入循环; [size=13.3333px] match = 0 [size=13.3333px]#设置变量match等于0; [size=13.3333px] input = raw_input("Please input the name whom you want to search :") [size=13.3333px]#交互式信息输入,输入input信息; [size=13.3333px] while not input.strip(): [size=13.3333px]#判断input值是否为空,如果input输出为空,则进入循环; [size=13.3333px] input = raw_input("Please input the name whom you want to search :") [size=13.3333px]#交互式信息输入,输入input信息; [size=13.3333px] name_file = file('search_name.txt') [size=13.3333px]#设置变量name_file,file('search_name.txt')是调用名为search_name.txt的文档 [size=13.3333px] while True: [size=13.3333px]#进入循环; [size=13.3333px] line = name_file.readline() #以行的形式,读取search_name.txt文档信息; [size=13.3333px] if len(line) == 0: #当len(name_file.readline() )为0时,表示读完了文件,len(name_file.readline() )为每一行的字符长度,空行的内容为\n也是有两个字符。len为0时进入循环; [size=13.3333px] break #执行到这里跳出循环; [size=13.3333px] if input in line: #如果输入的input信息可以匹配到文件的某一行,进入循环; [size=13.3333px] print 'Match item: %s' %line #输出匹配到的行信息; [size=13.3333px] match = 1 #给变量match赋值为1 [size=13.3333px] if match == 0 : #如果match等于0,则进入 ; [size=13.3333px] print 'No match item found!' #输出提示信息; [size=13.3333px] else: print "Sorry ,user %s not found " %input #如果输入的用户不是wenlong,则输出信息没有这个用户;
[size=13.3333px]#!/usr/bin/python [size=13.3333px]while True: [size=13.3333px] input = raw_input('Please input your username:') [size=13.3333px] if input == "wenlong": [size=13.3333px] password = raw_input('Please input your pass:') [size=13.3333px] p = '123' [size=13.3333px] while password != p: [size=13.3333px] password = raw_input('Please input your pass again:') [size=13.3333px] if password == p: [size=13.3333px] print 'welcome to select system!' [size=13.3333px] while True: [size=13.3333px] match = 0 [size=13.3333px] input = raw_input("Please input the name whom you want to search :") [size=13.3333px] while not input.strip(): [size=13.3333px] print 'No match item found!' [size=13.3333px] input = raw_input("Please input the name whom you want to search :") [size=13.3333px] name_file = file('search_name.txt') [size=13.3333px] while True: [size=13.3333px] line = name_file.readline() [size=13.3333px] if len(line) == 0: [size=13.3333px] break [size=13.3333px] if input in line: [size=13.3333px] print 'Match item: ' , line [size=13.3333px] match = 1 [size=13.3333px] if match == 0 : [size=13.3333px] print 'No match item found!' [size=13.3333px] else: print "Sorry ,user %s not found " %input
|