667 views
Python开发

Python第九天 遍历、数据类型转换

文章目录

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打开文件,使用打开类型方式

模式 描述
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)
    —>注:针对列表内刚好是元组形式的元素

Leave a Reply

影子专属博客 赣ICP备17013143号