首页 > 编程语言 > 详细

Python核心编程——Chapter9

时间:2014-03-11 23:31:53      阅读:690      评论:0      收藏:0      [点我收藏+]

好久没写过Python了,前一阵子忙这忙那的,都几乎把Python给丢掉了,话不多说,马上开始。

9.1.文件过滤。显示一个文件的所有行,并且忽略以井号开头的行。

其实这个题目比较基础,用shell语言的话,一行就能搞定。还是做一下吧。

用shell语言+正则:

dzhwen@deng:~/python文件/Homework/Chapter9$ cat regular_express.txt | grep -v ^#

用python:

bubuko.com,布布扣
 1 #!/usr/bin/env python
 2 #-*-coding=utf-8-*-
 3 
 4 def show(filename):
 5     f = open(filename,r)
 6     for eachLine in f:
 7         if eachLine[0] != #:
 8             print eachLine,
 9 
10 if __name__ == __main__:
11     show(/home/dzhwen/regular_express.txt)
bubuko.com,布布扣

9.2.又是文件访问题目,显示文件F的前N行

shell:

dzhwen@deng:~/python文件/Homework/Chapter9$ head -n N F

python:

bubuko.com,布布扣
 1 #!/usr/bin/env python
 2 #-*-coding=utf-8-*-
 3 
 4 def head():
 5     filename = raw_input(请输入文件名称:)
 6     lines = raw_input(请输入行数:)
 7     start = 0
 8     f = open(filename,r)
 9     while start < int(lines):
10         print f.next(),
11         start += 1
12 
13 if __name__ == __main__:
14     head()
bubuko.com,布布扣

9.3.文件信息。显示一个文件的总行数

shell:

dzhwen@deng:~/python文件/Homework/Chapter9$ wc -l regu*
22 regular_express.txt

python:

>>> f = open(/home/dzhwen/regular_express.txt)
>>> list = f.readlines()
>>> len(list)
22

 9.14.将计算器程序修改成接受命令行参数

这道题目还是挺有挑战性的。用到的是sys模块的命令行参数

bubuko.com,布布扣
 1 #!/usr/bin/env python
 2 #-*-coding=utf-8-*-
 3 
 4 import sys
 5 
 6 def calc():
 7     f = open(/home/dzhwen/123.txt,a+)
 8     list = sys.argv
 9     if list[1] == print:
10         for eachLine in f:
11             print eachLine,
12         return -1
13     if list[2] == +:
14         ca = list[1:]
15         for char in ca:
16             f.write(char+ )
17         f.write(\n)
18         f.write(str(float(list[1]) + float(list[3]))+\n)
19     if list[2] == -:
20         ca = list[1:]
21         for char in ca:
22             f.write(char+ )
23         f.write(\n)
24         f.write(str(float(list[1]) - float(list[3]))+\n)
25     if list[2] == *:
26         ca = list[1:]
27         for char in ca:
28             f.write(char+ )
29         f.write(\n)
30         f.write(str(float(list[1]) * float(list[3]))+\n)
31     if list[2] == /:
32         ca = list[1:]
33         for char in ca:
34             f.write(char+ )
35         f.write(\n)
36         f.write(str(float(list[1]) / float(list[3]))+\n)
37     if list[2] == %:
38         ca = list[1:]
39         for char in ca:
40             f.write(char+ )
41         f.write(\n)
42         f.write(str(float(list[1]) % float(list[3]))+\n)
43     if list[2] == ^:
44         ca = list[1:]
45         for char in ca:
46             f.write(char+ )
47         f.write(\n)
48         f.write(str(float(list[1]) ** float(list[3]))+\n)
49 
50 if __name__ == __main__:
51     calc()
bubuko.com,布布扣

9.15.复制文件,将第一个文件的内容复制到第二个文件中去。

同时打开两个通道看可不可以。

bubuko.com,布布扣
#!/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)
bubuko.com,布布扣

 9.18.搜索文本。查找一个字符在文中的出现次数。

shell:

dzhwen@deng:~/python文件/Homework/Chapter9$ cat regular_express.txt | grep # |wc -l
5

python:没有现成函数,唯有用count

bubuko.com,布布扣
 1 #!/usr/bin/env python
 2 #-*-coding=utf-8-*-
 3 
 4 def charcount(filename):
 5     num = raw_input(请输入字节值:)
 6     Count = 0
 7     f = open(filename,r)
 8     for eachLine in f:
 9         Count += eachLine.count(chr(int(num)))
10     return Count
11 
12 if __name__ == __main__:
13     print charcount(/home/dzhwen/regular_express.txt)
bubuko.com,布布扣

Python核心编程——Chapter9,布布扣,bubuko.com

Python核心编程——Chapter9

原文:http://www.cnblogs.com/sysu-blackbear/p/3594636.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!