A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[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                                            



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马