2.6 使用for循环遍历文件
打开文件: 需要借助内置函数open()
open(...)
open(name[, mode[, buffering]]) -> file object name:文件名 mode 打开方式(读写、二进制等)

Open a file using the file() type, returns a file object.  This is the
preferred way to open a file.  See file.__doc__ for further information.

以open()内置函数打开的文件返回的是一个文件对象

 •open
r:以读方式打开  只能读,不能改写,文件不存在会报错
w :以写方式打开   文件不存在会创建文件,小心操作,会更改文件内容
a :以追加模式   文件存在,在文件后追加,文件不存在则创建主要使用 r,w,a三种
r+ :以读写模式打开
w+:以读写模式打开 (参见 w )
a+:以读写模式打开 (参见 a )
rb:以二进制读模式打开
wb:以二进制写模式打开 (参见 w )
ab:以二进制追加模式打开 (参见 a )
rb+:以二进制读写模式打开 (参见 r+ )
wb+:以二进制读写模式打开 (参见 w+ )
ab+: 以二进制读写模式打开 (参见 a+)

•with open

fd = open('/tmp/1.sh')
<open file '/tmp/1.sh', mode 'r' at 0x13f3c00> 返回的是一个在内存里的文件对象
type(fd)
file fd是一个file类型

In [7]: fd. 文件对象的方法
fd.close fd.errors fd.isatty fd.newlines fd.readinto fd.seek fd.truncate fd.xreadlines
fd.closed fd.fileno fd.mode fd.next fd.readline fd.softspace fd.write
fd.encoding fd.flush fd.name fd.read fd.readlines fd.tell fd.writelines

close() 关闭文件

fd = open('/tmp/1.sh','w') 以w方式打开文件
fd.write("a") 对文件写入 write方法只能写入字符串,而且原文件内容会消失 write方法只接受字符串
write完成后必须使用 close()方法关闭文件,写入才会生效

fd.read() 把文件内容读一遍,读完之后指针找到文件的最后,再次read(),则读取不到内容了,将返回一个空的字符串
read(2) 表示读2个字符

fd.readline() 每次执行读取一行
fd.readlines() 一次性读取所有行,返回的是一个list列表
fd.readlines()
['123\n', '43\n', '5\n', '1\n'] 返回列表

使用for循环遍历文件
#!/usr/bin/python
fd=open('/tmp/1.sh')
for line in fd.readlines():
print line,

问题,如果文件很大,则内存开销会很大
优化写法 for line in fd: 这样的话他遍历的是一个对象,而不是打开一个大的列表
fd.next() 方法

2.7 使用while循环遍历文件
#!/usr/bin/python

fd=open('/tmp/1.sh')
while True:
line=fd.readline()
if not line: 如果读到空行,if 空行就是flase not false就是true 然后执行break
break
print line,

使用with open 使用with open不用close文件(python2.6以后才支持)
with open('/tmp/1.sh') as fd:
while True:
line=fd.readline()
if not line:
break
print line,

2.8 统计系统剩余的内存
统计系统中可用的内存

cat /proc/meminfo 内存使用在/proc/meminfo文件中,其中第一第二行
MemTotal: 999936 kB 总的内存
MemFree: 697388 kB 剩余内存

脚本思路,通过对这个文件做一个遍历,然后使用startswith()方法 查找以固定字符串开头的行,然后使用split()方法切割行取出需要的值

#!/usr/bin/python
#coding:utf-8
with open('/proc/meminfo') as fd:
for line in fd:
if line.startswith('MemTotal'): 调用startswith方法,找到MemTotal开头的行
total=line.split()[1] 切割这一行的字符串,取出total的值
continue 遍历第一行的时候找到了 continue退出本次循环,优化程序
if line.startswith('MemFree'):
free=line.split()[1]
break 如果已经全部找到了,则退出for循环,优化程序
print "%.2fMB" % (int(free)/1024.0) 格式化输出

2.9 数据类型转换(计算mac地址)
python数据类型有:数值型 字符串型 列表 元组 字典 各个数据类型之间是可以转换的\

一、十六进制字符串转为十进制
int(‘12' ,16)
18
int('0x12' ,16)
18
二、十进制转为十六进制
hex(10)
'0xa‘
注意:字符串之间是无法进行运算的,只有数字之间才能进行算术计算

十进制转为字符串
str(10)
'10'

字符串转为十进制
int('10')

例子:计算网卡mac地址的下一个地址 也就是00:0c:29:f5:20:7c 7c+1 比如服务器上有多个地址 mac地址基本都是连续着的
脚本实现
#!/usr/bin/python

macaddr = '00:0c:29:f5:20:7c'
prefix_mac=macaddr[:-3]
last_two = macaddr[-2:]
plus_one=int(last_two,16)+1
new_last_two=hex(plus_one)[2:]
new_mac=prefix_mac + ':' + new_last_two
print new_mac

3.0 数据类型转换(列表与字典相互转换)

•字符串转列表
list(string)
•列表转字符串
''.join(list) ''代表转换成字符串后以什么作为分隔
•字符串转元组
tuple(string)
•元组转字符串
''.join(tuple)
元祖转列表,列表转元组
list(tuple) tuple(list)
•列表与元组互相转换
•字典转换成列表
字典的items()方法
•列表转为字典

  • dict()

转载于:https://blog.51cto.com/4833797/2321778

11月23日python笔记(python基础2.6-3.0)相关推荐

  1. 2017年11月23日学习笔记_用python解决杨辉三角函数,以及理解

    今天学习了廖雪峰老师的python教程,学到杨辉三角函数的时候很迷茫, 他的基本格式如下: [1],[1, 1],[1, 2, 1],[1, 3, 3, 1],[1, 4, 6, 4, 1],[1, ...

  2. 2021年11月23日对自己的一次鼓励

    2021年11月23日 author:陈镇坤27 创建时间:2021年11月23日15:23:31 ------------------------------ 学习犹如逆水行舟,不进则退 从今年7月 ...

  3. 区块链城市 CityDAO-元宇宙的雏形 |号外:11月23日下午数据觉醒元宇宙 圆桌论坛...

    本文转自 澎湃新闻<最激进的CityDAO,为何吸引V神进入社区关注?> https://m.thepaper.cn/baijiahao_15328475 国内的章愳(ZOOJOO)参与了 ...

  4. 西湖大学鞠峰:环境微生物宏基因组学(报告视频+PPT,11月23日)

    报告题目:环境微生物宏基因组学 报告人:鞠峰研究员 报告时间:2020年11月23日 鞠峰,西湖大学研究员,中国工程院院刊<Engineering>编委.Frontiers系列期刊编委与审 ...

  5. 苹果越狱后必备软件,总有你需要的!11月23日追加14个,支持【iOS4】

    http://bbs.dospy.com/thread-7398730-1-301-2.html越狱后必备软件,总有你需要的!11月23日追加14个,支持[iOS4] 背景自定义插件 转载于:http ...

  6. 互联网线下活动一周整理 11月23日—29日

    本周虎嗅通过懒汉互联等公开渠道收集互联网线下活动共计26场.其中北京13场,上海1场,广深3场,成都3场.下周有几次重大活动,如在北京举办的创业家年会.黑马大赛年度总决赛,中国创新营销峰会,第五届中国 ...

  7. 始于2015年11月23日,终于2018年08月08日

    留念. 2015年11月23日:在一起 2016年01月17日-21日:北京机场,我们❤ 2016年04月16日:去他所在城市--成都 2016年06月04-06日:第一次小旅游--都江堰.青城山 2 ...

  8. 【历史上的今天】11 月 23 日:FTP 作者出生;Alicebot 诞生;世界机器人大会

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 11 月 23 日,在 18 年前的今天,著名游戏公司暴雪娱乐所制作的第一款网络游戏<魔兽世界 ...

  9. 今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 11月23日

    365资讯简报,每天精选15条热点新闻简报1条微语,每天一分钟,知晓天下事! 2021年11月23日 星期二 农历十月十九 1.卫健委:将于明年在15个省份开展老年医疗护理服务试点. 2.31省份乡村 ...

  10. 11月23日全球域名商解析量TOP22:爱名网升至十九名

    IDC评述网(idcps.com)11月25日报道:根据DailyChanges公布的实时数据显示,截至2015年11月23日,全球域名解析量22强排名,环比上期11月16日,出现明显变化.其中,爱名 ...

最新文章

  1. Xcache安装与使用
  2. SEO优化倦怠期?SEO排名和收录都不错时,到底还需不需要日更?
  3. 例题:青歌赛打分程序。去掉两个最高分,去掉两个最低分,再算平均分。主要学习数组和冒泡排序,什么情况下要定义数组...
  4. CentOS下Clonezilla通过网络自动备份还原系统
  5. Spring IOC流程源码分析
  6. Android之Android Studio--Gradle多渠道打包
  7. UVa 1642 (综合) Magical GCD
  8. java 数组合并_数组与链表
  9. C++学习之基本概念
  10. 动态规划--总体理解
  11. 移动端 短信发送,一键拨号功能
  12. python循环语句总结
  13. 最新版O泡易支付系统平台 PHP源码 第三方第四方免签支付平台系统 全开源可二开
  14. C语言循环结构作业总结
  15. Openvpn搭建并使用用户名密码登录
  16. C语言for括号后加分号,在C语言中,for语句的后面加分号和不加分号有何不同?...
  17. 可怕,任天堂找到了一种新的赚钱方式……​
  18. MBps与Mbps区别
  19. 网联车辆队列生态式协同自适应巡航控制策略研究-杨昱
  20. 算法高级(7)-限流(Rate limit)算法详解

热门文章

  1. k3s 卸载_Mac-Homebrew安装/卸载/更换国内镜像源
  2. python a or b 输出值为_深入分析python的and or 返回值
  3. chmod命令用于更改文件或目录的所有者_Linux 修改权限命令 chmod 用法示例
  4. python 提取元组中的值_Python中的sqlite3提取与元组中的值相对应的条目 - python
  5. el表达式 循环_EL表达式+JSTL+Ajax 047
  6. java中jscrollpane_java中JScrollPane问题
  7. vue3没了$children,如何获取子组件???
  8. 1220.统计元音字母序列的数目-LeetCode
  9. mysql fixed数据类型_fixed数据类型
  10. 参考文献的序号怎么对齐_学术论文发表写作格式、具体要求和参考文献的要求模板...