文章目录
2018-11-23 20:37:33
2.5 while循环
- while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务
- 执行语句可以是单个语句或语句块。
- 判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
- 当判断条件假false时,循环结束。
语法
while 判断条件:
执行语句……
else:
执行语句……
注:else 中的语句会在循环正常执行完(即 while 不是通过 break 跳出而中断的)的情况下执行,与for...else一样
举例
#!/usr/bin/python
count = 0
while count < 5:
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"
2.6 使用for循环访问文件
- 打开文件f后,需要read来读取文件内容
- f.read([n])读取文件里面所有的内容,读取完之后,指针会到文件最尾部(或者指定n的位置),再次f.read()时,就无法读出指针前面的内容了–>返回的是字符串
- f.readline()只读一行,指针会在每行的后面,再执行一次就会读取下一行数据
- f.readlines() 读文件所有内容,但是会生成一个列表list,列表里每个元素就是文件的每行内容,每个元素后面会有个换行符/n,(print打印时,要在后面加个逗号“,”,避免再次换行)
- 一般循环使用for i in f
–> f是一个对象,不占用太多的内存资源,而如果使用f.readline..这种方式,如果文件很大,占用内存也会很大
open打开文件,使用打开类型方式
while 判断条件:
执行语句……
else:
执行语句……
注:else 中的语句会在循环正常执行完(即 while 不是通过 break 跳出而中断的)的情况下执行,与for...else一样
#!/usr/bin/python
count = 0
while count < 5:
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"
2.6 使用for循环访问文件
- 打开文件f后,需要read来读取文件内容
- f.read([n])读取文件里面所有的内容,读取完之后,指针会到文件最尾部(或者指定n的位置),再次f.read()时,就无法读出指针前面的内容了–>返回的是字符串
- f.readline()只读一行,指针会在每行的后面,再执行一次就会读取下一行数据
- f.readlines() 读文件所有内容,但是会生成一个列表list,列表里每个元素就是文件的每行内容,每个元素后面会有个换行符/n,(print打印时,要在后面加个逗号“,”,避免再次换行)
- 一般循环使用for i in f
–> f是一个对象,不占用太多的内存资源,而如果使用f.readline..这种方式,如果文件很大,占用内存也会很大
open打开文件,使用打开类型方式
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
举例
#!/usr/bin/python
"""
aaaaaa
bbbbbb
cccccc
dddddd
""">1.txt
------------------------------------------------------------------
f = open('1.txt',r)
for i in f:
print i
f.close()
2.7 while遍历文件
#!/usr/bin/python
"""
aaaaaa
bbbbbb
cccccc
dddddd
""">1.txt
------------------------------------------------------------------
with open('1.txt',r) as f:
while True:
line = f.readline()
if not line:
break
注:while需要一个条件跳出循环,readline()到文件末尾会返回一个空字符串
打开文件需要关闭文件,使用with open会自动关闭文件
2.8 统计系统剩余的内存
- 存放信息的文件/proc/meminfo
#!/usr/bin/python
#coding:utf8
with open('/proc/meminfo','r') as f:
for line in f:
if 'MemTotal' in line:
total_size = line.split()
total_size = int(total_size[1])/1024
print "System mem total is: %.2f MB" %total_size
continue
if 'MemFree' in line:
free_size = line.split()
free_size = int(free_size[1])/1024
print "System mem free is: %.2f MB" %free_size
break
print "valuse is %.2f " %(float(free_size)/total_size) +"%"
------------------------------结果如下-----------------------------------------
System mem total is: 1839.00 MB
System mem free is: 75.00 MB
valuse is 0.04 %
2.9 数据类型转换(计算MAC地址)
- 16进制转换成10进制
int(‘a’,16) 将16进制的a转成int类型
int(‘0xa’,16) 将16进制的a转成int类型
- 字符串转进制
int(’10’)
- 10进制转换成16进制
hex(10)
举例
#/usr/bin/python
#coding:utf8
macaddr = '00:16:3e:0a:18:09'
head_mac = macaddr[:-3] #头部固定
last_two = macaddr[-2:] #取最后两位
new_last_two_int = int(last_two,16) +1 #下一个地址为上一个地址+1
new_last_two = hex(new_last_two_int)[2:] #10转16新地址
if len(new_last_two) == 1: #防止出现少0现象进行判断
new_last_two = '0' + new_last_two
new_macaddr = head_mac + ':'+new_last_two
print(new_macaddr)
3.0 数据类型转换
- 字符串转列表
list(str)
- 列表转字符串
”join(list)
—>注:”里面是转换后的分隔符,()括号内的是一个可迭代的对象
- 字符串装元组
tuple(str)
- 元组转字符串 ”join(tuple)
- 字典转列表 dic.items()
- 列表转字典 dict(list)
—>注:针对列表内刚好是元组形式的元素
#!/usr/bin/python
"""
aaaaaa
bbbbbb
cccccc
dddddd
""">1.txt
------------------------------------------------------------------
f = open('1.txt',r)
for i in f:
print i
f.close()
#!/usr/bin/python
"""
aaaaaa
bbbbbb
cccccc
dddddd
""">1.txt
------------------------------------------------------------------
with open('1.txt',r) as f:
while True:
line = f.readline()
if not line:
break
注:while需要一个条件跳出循环,readline()到文件末尾会返回一个空字符串
打开文件需要关闭文件,使用with open会自动关闭文件
#!/usr/bin/python
#coding:utf8
with open('/proc/meminfo','r') as f:
for line in f:
if 'MemTotal' in line:
total_size = line.split()
total_size = int(total_size[1])/1024
print "System mem total is: %.2f MB" %total_size
continue
if 'MemFree' in line:
free_size = line.split()
free_size = int(free_size[1])/1024
print "System mem free is: %.2f MB" %free_size
break
print "valuse is %.2f " %(float(free_size)/total_size) +"%"
------------------------------结果如下-----------------------------------------
System mem total is: 1839.00 MB
System mem free is: 75.00 MB
valuse is 0.04 %
int(‘a’,16) 将16进制的a转成int类型
int(‘0xa’,16) 将16进制的a转成int类型
int(’10’)
hex(10)
#/usr/bin/python
#coding:utf8
macaddr = '00:16:3e:0a:18:09'
head_mac = macaddr[:-3] #头部固定
last_two = macaddr[-2:] #取最后两位
new_last_two_int = int(last_two,16) +1 #下一个地址为上一个地址+1
new_last_two = hex(new_last_two_int)[2:] #10转16新地址
if len(new_last_two) == 1: #防止出现少0现象进行判断
new_last_two = '0' + new_last_two
new_macaddr = head_mac + ':'+new_last_two
print(new_macaddr)
3.0 数据类型转换
- 字符串转列表
list(str) - 列表转字符串
”join(list)
—>注:”里面是转换后的分隔符,()括号内的是一个可迭代的对象 - 字符串装元组
tuple(str) - 元组转字符串 ”join(tuple)
- 字典转列表 dic.items()
- 列表转字典 dict(list)
—>注:针对列表内刚好是元组形式的元素