例子1:
打印列表每个元素对应的索引
[root@master script]# vim suoyin.py #!/usr/bin/python # coding:utf-8 alist = ['fu','shan','hua','hive'] for i in range(len(alist)): print '%s:%s' % (i,alist[i]) 检验: [root@master script]# python suoyin.py 0:fu 1:shan 2:hua 3:hive
另外一种方式:
[root@master script]# vim suoyin.py #!/usr/bin/python # coding:utf-8 alist = ['fu','shan','hua','hive'] #for i in range(len(alist)): # print '%s:%s' % (i,alist[i]) for i in enumerate(alist): print '%s:%s' %(i[0],i[1]) 检验: [root@master script]# python suoyin.py (0, 'fu') (1, 'shan') (2, 'hua') (3, 'hive')
[root@master script]# vim suoyin.py
#!/usr/bin/python
# coding:utf-8
alist = ['fu','shan','hua','hive']
#for i in range(len(alist)):
# print '%s:%s' % (i,alist[i])
for i in enumerate(alist):
print '%s:%s' % (i[0],i[1])
检验:
[root@master script]# python suoyin.py
0:fu
1:shan
2:hua
3:hive
还可以:
[root@master script]# vim suoyin.py #!/usr/bin/python # coding:utf-8 alist = ['fu','shan','hua','hive'] for m,n in enumerate(alist): print '%s:%s' % (m,n) 检验: [root@master script]# python suoyin.py 0:fu 1:shan 2:hua 3:hive
#######列表一些简单用法############
In [10]: alist = [23,10,45,33] In [11]: reversed(alist) Out[11]: <listreverseiterator at 0x7f44bd7c3910> In [12]: list(reversed(alist)) Out[12]: [33, 45, 10, 23] In [15]: sorted(alist) #从小到大,升序 Out[15]: [10, 23, 33, 45]
In [16]: list(reversed(sorted(alist))) #降序排列
Out[16]: [45, 33, 23, 10]
或者:
In [18]: sorted(alist)[::-1]
Out[18]: [45, 33, 23, 10]
##########字符串格式化############
In [19]: '%10s%s' % ('name','fush') ##'%10s' 右对齐,占是个字符,不够的用空格补上;默认右对齐 Out[19]: ' namefush' In [20]: '%10s %s' % ('name','fush') Out[20]: ' name fush' In [21]: '%-10s %s' % ('name','fush') ##'%-10s' 左对齐,占是个字符,不够的用空格补上
Out[21]: 'name fush'
还有一种不常用的用法:
1 In [22]: '%*s %*s' % (-20,'name',-8,'fush') ##在s前面用*号,在后面用数字代替 2 Out[22]: 'name fush '
格式化案例:
1 [root@master script]# vim huamian.py 2 #!/usr/bin/python 3 # coding:utf-8 4 5 6 def get_content(): 7 contents = [] 8 while True: 9 data = raw_input('<Enter to quit>: ') 10 contents.append(data) 11 if not data: 12 break 13 return contents 14 15 if __name__ == '__main__': 16 width = 48 17 lines = get_content() 18 lines.pop() 19 print '+%s+' % ('#' * width) 20 for line in lines: 21 if not len(line)%2: 22 sp_width = (width -len(line)) / 2 23 print '+%s%s%s+' % (' ' * sp_width,line,' ' * sp_width) 24 else: 25 sp_width = (width -len(line)) / 2 26 print '+%s%s%s +' % (' ' * sp_width,line,' ' * sp_width) 27 print '+%s+' % ('#' * width)
改进版:
1 #!/usr/bin/python 2 # coding:utf-8 3 4 5 def get_content(): 6 contents = [] 7 while True: 8 data = raw_input('<Enter to quit>: ') 9 if not data: 10 break 11 contents.append(data) 12 return contents 13 14 if __name__ == '__main__': 15 width = 48 16 lines = get_content() 17 print '+%s+' % ('#' * width) 18 for line in lines: 19 sp_width , extra = divmod((width -len(line)),2) 20 print '+%s%s%s+' % (' ' * sp_width,line,' ' * (sp_width + extra)) 21 print '+%s+' % ('#' * width)
备注:num1,num2 = divmod(10,2)
num1 = 10/2 的商
num2 = 10/2 的余数
奇数/2 的余数(num2=1)
偶数/2 的余数(num2=0)
验证效果:
1 [root@master script]# python huamian.py 2 <Enter to quit>: hello 3 <Enter to quit>: world! 4 <Enter to quit>: 5 +################################################+ 6 + hello + 7 + world! + 8 +################################################+
##########另外一种格式化#############
1 >>> import string 2 >>> data = 'hello $name,I will see you $day' 3 >>> t = string.Template(data) 4 >>> t.substitute(name='tony',day='afternoon') 5 'hello tony,I will see you afternoon' 6 >>> t.substitute(name='herry',day='afternoon') 7 'hello herry,I will see you afternoon'
###########添加用户和密码以及发邮件通知案例#############
首先编写一个获取随机密码的文件:
1 #!/usr/bin/python 2 # coding:utf-8 3 4 import string 5 import random 6 import sys 7 8 9 def get_pass(): 10 pwd = '' 11 for i in range(8): 12 char = random.choice(string.lowercase + string.uppercase + string.digits) 13 pwd += char 14 return pwd 15 if __name__ == '__main__': 16 print get_pass()
正式文件代码:
[root@master script]# cat adduser.py #!/usr/bin/python # coding:utf-8 import sys import os import ranpass import string contents = """username: ${username} password: ${password} """ t = string.Template(contents) def adduser(user,pwd,email): data = t.substitute(username =user,password = pwd) os.system('useradd %s' % username) os.system('echo %s |passwd --stdin %s' % (pwd,username)) os.system('echo -e "%s" |mail -s "user info" %s' % (data,email)) if __name__ == '__main__': username = sys.argv[1] pwd = ranpass.get_pass() adduser(username,pwd,'root@localhost')
检验:
[root@master script]# chmod +x adduser.py
[root@master script]# ./adduser.py tiantian useradd: user 'tiantian' already exists Changing password for user tiantian. passwd: all authentication tokens updated successfully. [root@master script]# cat /var/spool/mail/root |more From root@master.localdomain Fri Aug 4 18:32:36 2017 Return-Path: <root@master.localdomain> X-Original-To: root@localhost Delivered-To: root@localhost.localdomain Received: by master.localdomain (Postfix, from userid 0) id 844AE22CD3; Fri, 4 Aug 2017 18:32:36 +0800 (CST) Date: Fri, 04 Aug 2017 18:32:36 +0800 To: root@localhost.localdomain Subject: user info User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <20170804103236.844AE22CD3@master.localdomain> From: root@master.localdomain (root) username: tiantian password: GJh4t646 [root@master script]# mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/root": 1 message 1 new >N 1 root Fri Aug 4 18:32 21/635 "user info" & 1 Message 1: From root@master.localdomain Fri Aug 4 18:32:36 2017 Return-Path: <root@master.localdomain> X-Original-To: root@localhost Delivered-To: root@localhost.localdomain Date: Fri, 04 Aug 2017 18:32:36 +0800 To: root@localhost.localdomain Subject: user info User-Agent: Heirloom mailx 12.4 7/29/08 Content-Type: text/plain; charset=us-ascii From: root@master.localdomain (root) Status: R username: tiantian password: GJh4t646 &