python练习题-9-6

本代码是《Python核心编程(第二版)》第九章的9-6练习题,完成的功能为:文件比较:比较两个文本文件是否相同,如果不同,给出第一个不同处的行号和列号。

 1 #!/usr/bin/env python
 2 #-*- coding: utf-8 -*-
 3 
 4 
 5 #文件比较:比较两个文本文件是否相同,如果不同,给出第一个不同处的行号和列号
 6 def func_9_6():
 7     choice1 = raw_input("Enter one filename: ")
 8     choice2 = raw_input("Enter another filename: ")
 9     if choice1 == '' or choice2 == '':
10         return
11     f1 = open(choice1)
12     f2 = open(choice2)
13     lines1 = f1.readlines()
14     lines2 = f2.readlines()
15     lines_tmp1 = len(lines1) if len(lines1) < len(lines2) else len(lines2)
16     for i in range(lines_tmp1):
17         if lines1[i] == lines2[i]:
18             continue
19         lines_tmp2 = len(lines1[i]) if len(lines1[i]) < len(lines2[i]) else len(lines2[i])
20         for j in range(lines_tmp2):
21             if lines1[i][j] == lines2[i][j]:
22                 continue
23             else:
24                 print '%s is not equal of %s, col:%d raw:%d
' % (choice1, choice2, i+1, j+1)
25     if  len(lines1) == len(lines2) and i == lines_tmp1-1:
26         print '%s is equal of %s
' % (choice1, choice2)  
27 
28 def showmenu():
29     while True:
30         choice = raw_input("Enter question num, (Q)uit: ")
31         if choice.lower() == 'q':
32             break
33         if choice == '9-6':
34             func_9_6()
35 
36 if __name__ == '__main__':
37     showmenu()

测试结果:

 1 [root@192 python_code]# python file_operate.py 
 2 Enter question num, (Q)uit: 9-6
 3 Enter one filename: testfile  
 4 Enter another filename: testfile
 5 testfile is equal of testfile
 6 
 7 Enter question num, (Q)uit: 9-6
 8 Enter one filename: testfile
 9 Enter another filename: myfile
10 testfile is not equal of myfile, col:1 raw:6
11 
12 Enter question num, (Q)uit: 

两个文件testfile和myfile的内容如下:

[root@192 python_code]# more testfile 
hello
world
[root@192 python_code]# more myfile 
helloworld
[root@192 python_code]# 
原文地址:https://www.cnblogs.com/mrlayfolk/p/12019431.html