Python核心编程——Chapter9
好久没写过Python了,前一阵子忙这忙那的,都几乎把Python给丢掉了,话不多说,马上开始。
9.1.文件过滤。显示一个文件的所有行,并且忽略以井号开头的行。
其实这个题目比较基础,用shell语言的话,一行就能搞定。还是做一下吧。
用shell语言+正则:
dzhwen@deng:~/python文件/Homework/Chapter9$ cat regular_express.txt | grep -v '^#'
用python:
#!/usr/bin/env python
#-*-coding=utf-8-*- def show(filename):
f = open(filename,'r')
for eachLine in f:
if eachLine[0] != '#':
print eachLine, if __name__ == '__main__':
show('/home/dzhwen/regular_express.txt')
9.2.又是文件访问题目,显示文件F的前N行
shell:
dzhwen@deng:~/python文件/Homework/Chapter9$ head -n N F
python:
#!/usr/bin/env python
#-*-coding=utf-8-*- def head():
filename = raw_input('请输入文件名称:')
lines = raw_input('请输入行数:')
start = 0
f = open(filename,'r')
while start < int(lines):
print f.next(),
start += 1 if __name__ == '__main__':
head()
9.3.文件信息。显示一个文件的总行数
shell:
dzhwen@deng:~/python文件/Homework/Chapter9$ wc -l regu*
regular_express.txt
python:
>>> f = open('/home/dzhwen/regular_express.txt')
>>> list = f.readlines()
>>> len(list)
22
9.14.将计算器程序修改成接受命令行参数
这道题目还是挺有挑战性的。用到的是sys模块的命令行参数
#!/usr/bin/env python
#-*-coding=utf-8-*- import sys def calc():
f = open('/home/dzhwen/123.txt','a+')
list = sys.argv
if list[1] == 'print':
for eachLine in f:
print eachLine,
return -1
if list[2] == '+':
ca = list[1:]
for char in ca:
f.write(char+' ')
f.write('\n')
f.write(str(float(list[1]) + float(list[3]))+'\n')
if list[2] == '-':
ca = list[1:]
for char in ca:
f.write(char+' ')
f.write('\n')
f.write(str(float(list[1]) - float(list[3]))+'\n')
if list[2] == '*':
ca = list[1:]
for char in ca:
f.write(char+' ')
f.write('\n')
f.write(str(float(list[1]) * float(list[3]))+'\n')
if list[2] == '/':
ca = list[1:]
for char in ca:
f.write(char+' ')
f.write('\n')
f.write(str(float(list[1]) / float(list[3]))+'\n')
if list[2] == '%':
ca = list[1:]
for char in ca:
f.write(char+' ')
f.write('\n')
f.write(str(float(list[1]) % float(list[3]))+'\n')
if list[2] == '^':
ca = list[1:]
for char in ca:
f.write(char+' ')
f.write('\n')
f.write(str(float(list[1]) ** float(list[3]))+'\n') if __name__ == '__main__':
calc()
9.15.复制文件,将第一个文件的内容复制到第二个文件中去。
同时打开两个通道看可不可以。
#!/usr/bin/env python
#-*-coding=utf-8-*- def copy(file1,file2):
f = open(file1,'r')
g = open(file2,'a+')
for eachLine in f:
g.write(eachLine) if __name__ == '__main__':
copy('/home/dzhwen/123.txt','/home/dzhwen/456.txt')
9.18.搜索文本。查找一个字符在文中的出现次数。
shell:
dzhwen@deng:~/python文件/Homework/Chapter9$ cat regular_express.txt | grep '#' |wc -l
python:没有现成函数,唯有用count
#!/usr/bin/env python
#-*-coding=utf-8-*- def charcount(filename):
num = raw_input('请输入字节值:')
Count = 0
f = open(filename,'r')
for eachLine in f:
Count += eachLine.count(chr(int(num)))
return Count if __name__ == '__main__':
print charcount('/home/dzhwen/regular_express.txt')
Python核心编程——Chapter9的更多相关文章
- python核心编程第二版笔记
python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d 提供调试输出1.2 –O 生成优化的字节码(生成 ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
- Python核心编程第二版(中文).pdf 目录整理
python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...
- python核心编程--笔记(不定时跟新)(转)
的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v ...
- python核心编程笔记(转)
解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v 冗 ...
- python核心编程(第二版)习题
重新再看一遍python核心编程,把后面的习题都做一下.
- Python核心编程这本书的一些错误
<Python核心编程第二版>这本书比<Python基础教程第二版修订版>详细很多,丰富了很多细节,虽然它是一本经典的入门书,但我发现还是存在一些明显的错误.在面向对象编程这一 ...
- Python核心编程-描述符
python中,什么描述符.描述符就是实现了"__get__"."__set__"或"__delete__" 方法中至少一个的对象.什么是非 ...
- Python核心编程-闭包
百度搜了一下闭包的概念:简而言之,闭包的作用就是在外部函数执行完并返回后,闭包使得收机制不会收回函数所占用的资源,因为内部函数的执行需要依赖外函数中的变量.这是对闭包作用的非常直白的描述,不专业也不严 ...
随机推荐
- HDU 2134 Cuts the cake
http://acm.hdu.edu.cn/showproblem.php?pid=2134 Problem Description Ice cream took a bronze medal in ...
- Appium 服务关键字(转)
来源: https://github.com/appium/appium/blob/master/docs/cn/writing-running-appium/caps.cn.md#appium-服务 ...
- Python3.6 AES加密 pycrypto 更新为 pycryptodemo | TypeError: Object type <class 'str'> cannot be passed to C code
#!/usr/bin/env python# -*- coding:utf-8 -*-# @author: rui.xu# @update: jt.huang# 这里使用pycryptodemo库# ...
- HDU4436_str2int
很好的一个题目.对于理解后缀自动机很有用. 题目给你若干数字串,总长度不超过100000,任意一个串的任意一个子串都可以拿出来单独的作为一个数字.同一个数字只算一次. 问所有不同数字的和为多少? 嗯嗯 ...
- nowcoder 203A Knight(贪心+打表)
题目链接 题目描述 有一张无限大的棋盘,你要将马从(0,0)移到(n,m). 每一步中,如果马在(x,y),你可以将它移动到(x+1,y+2),(x+1,y-2),(x-1,y+2),(x-1,y-2 ...
- 【uoj#228】基础数据结构练习题 线段树+均摊分析
题目描述 给出一个长度为 $n$ 的序列,支持 $m$ 次操作,操作有三种:区间加.区间开根.区间求和. $n,m,a_i\le 100000$ . 题解 线段树+均摊分析 对于原来的两个数 $a$ ...
- JVM类加载机制详解(二)类加载器与双亲委派模型
在上一篇JVM类加载机制详解(一)JVM类加载过程中说到,类加载机制的第一个阶段加载做的工作有: 1.通过一个类的全限定名(包名与类名)来获取定义此类的二进制字节流(Class文件).而获取的方式,可 ...
- matplotlib + pandas绘图
利用pandas处理日期数据,并根据日期绘制增长率曲线. 处理的json文本内容如下: # pd.json [{"name": "A", "date& ...
- VMware 三种网络模式的区别
VMware 三种网络模式的区别 VMware 三种网络模式的区别 我们首先说一下VMware的几个虚拟设备 VMnet0:用于虚拟桥接网络下的虚拟交换机 VMnet1:用于虚拟Host-Only网络 ...
- 【BZOJ4869】【SHOI2017】相逢是问候
Description BZOJ传送门 Solution 这题涉及到指数嵌套堆叠,可能可以用欧拉函数解决. 试想一个数\(a_i\)经过\(k\)次操作后会变成什么? \[ k个c\;\; \begi ...