参考 :http://blog.csdn.net/junwei0206/article/details/44988195
1.编写一个程序,接受用户的输入并保存为新的文件,程序实现如图:
def fileWriter(fname):
#接受用户的输入并保存为新的文件
f = open(fname,"w")
print('请输入内容【单独输入\':w\'保存退出】:')
while True:
words = input()
if words !=":w":
f.write(words+"\n")
#f.write("%s\n"%words)
else:
break
f.close()
'''
#测试
fname = input("请输入文件名:")
fileWriter(fname)
'''
2.编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置,程序实现如
图:
def fileCompare(filename1,filename2):
#比较两个文件,返回不同的行号
f1 = open(filename1,"r")
f2 = open(filename2,"r")
count = 0 #统计行数
diff = [] #统计不一样的行号
for line1 in f1:
line2 = f2.readline()
count += 1
if line1 != line2:
diff.append(count)
f1.close()
f2.close()
return diff
'''
#测试
filename1 = input("请输入文件名:")
filename2 = input("请输入文件名:")
diff = fileCompare(filename1,filename2)
if len(diff) == 0:
print("两个文件完全一样!")
else:
print("两个文件共有%d个地方不同:"%len(diff))
for each in deff:
print("第%d行不一样"%each)
'''
3.编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏幕上,程序实现如图:
def filePrint(fname,lineNum):
#打印输入的行数
f = open(fname)
print('\n文件%s的前%s的内容如下:\n'%(fname,lineNum))
for i in range(lineNum):
print(f.readline())
f.close()
'''
#测试
file_name = input(r'请输入要打开的文件(C:\test.txt):') #注意r
line_num = input('请输入需要显示该文件前几行:')
filePrint(file_name,line_num)
'''
4.呃,不得不说我们的用户变得越来越刁钻了。要求在上一题的基础上扩展,用户可以随意输入需要显示的行数。(如输
入13:21打印第13行到第21行,输入:21打印前21行,输入21:则打印从第21行开始到文件结尾所有内容)
def fileView(fname,lineSize):
#打印指定范围的行
(begin,end) = lineSize.split(":",1)
if begin == "":
begin = 1
else:
begin = int (begin)
if end == "":
end = -1
else:
end = int (end)
if begin == 1 and end == -1 :
text = "的全文"
elif begin == 1:
text = "从开始到%s"%end
elif end == -1:
text = "从%s到结束"%begin
else:
text = "从第%s行到第%s行"%(begin,end)
lineNum = end - begin +1
f = open(fname,"r")
for i in range(begin-1):#读掉前begin-1行
f.readline()
print("\n文件%s%s的内容如下:\n"%(fname,text)) #开始打印
if lineNum < 0: #打印至结束
print(f.read())
else:
for j in range(lineNum): #打印
print(f.readline())
f.close()
'''
#测试
fname = input(r'请输入要打开的文件(C:\\test.txt):')
lineSize = input('请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】:')
fileView(fname, lineSize)
'''