零基础学习Python 作业 第29章

0 编写一个程序, 接受用户的输入并保存为新文件, 程序实现如图:

 

# IDLE显示效果
>>> ================================ RESTART ================================
>>>
请输入文件名: something.txt
从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开

从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开

方法一

# coding=UTF-8
filename = raw_input("请输入文件名:")
filed = open(filename,'wt')
while True:
filered = raw_input('请输入内容【单独输入‘:w’保存退出】')
if filered != ':w':
filed.write('%s\n' %filered)
else:
break
filed.close()

方法二
def  file_write(file_name):
f = open(file_name,'wt')
print ('请输入内容【单独输入‘:w’保存退出】:')
while True:
write_some = raw_input('')
if write_some != ':w':
f.write('%s\n' %write_some)
else:
break
f.close()
file_name = raw_input('请输入文件名:')
file_write(file_name)
方法三:
filename = raw_input("请输入文件名:")
filed = open(filename,'wt')
list1 = []
print ("请输入内容[单独输入‘:w’保存退出]")
while True:
filered = raw_input('')
if filered != ':w':
list1.append('%s\n' %filered)
filed.writelines(list1)
list1 = []
else:
break
filed.close()

C:\Python27\python.exe C:/Users/Administrator/Desktop/untitled/lianxi004.py
请输入文件名:something.txt
请输入内容[单独输入‘:w’保存退出]
从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开

从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
:w

 


1 编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置,程序实现如代码表示:

方法一
filename1 = raw_input('请输入需要比较的头一个文件名:')
filename2 = raw_input('请输入需要比较的头一个文件名:')
f1 = open(filename1,'r')
f2 = open(filename2,'r')
# 计算行
num = 0
# 统计不相同的个数
count = []
for each in filename1:
for each in filename2:
num =num+1
if f1.readline() == f2.readline():
pass
else:
count.append(num)
f1.close()
f2.close()

if len(count) == 0:
print('两个文件一样!')
else:
print('两个文件共有[%d]处不同' % len(count))
print count
for each in count:
print('第 %d 行不一样!' % each)

C:\Python27\python.exe C:/Users/Administrator/Desktop/untitled/lianxi004.py
请输入需要比较的头一个文件名:something.txt
请输入需要比较的头一个文件名:something2.txt
两个文件共有[6]处不同
[1, 3, 6, 10, 12, 15]
第 1 行不一样!
第 3 行不一样!
第 6 行不一样!
第 10 行不一样!
第 12 行不一样!
第 15 行不一样!

方法2-定义函数:

def count_file(filename1,filename2):
f1 = open(filename1,'r')
f2 = open(filename2,'r')
# 计算行
num = 0
count = []
for each in filename1:
for each in filename2:
num +=1
if f1.readline()==f2.readline():
pass
else:
count.append(num)
f1.close()
f2.close()
if len(count)== 0:
print("两个文件完全一致!")
else:
print('两个文件共有[%d]处不同'%len(count))
print count
for each in count:
print('第 %d 行不一样!' % each)
if __name__ == "__main__":
filename1 = raw_input('请输入需要比较的头一个文件名:')
filename2 = raw_input('请输入需要比较的头一个文件名:')
count_file(filename1,filename2)

 


 2 编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行打印到屏幕上,程序实现如下图:

>>> ================================ RESTART ================================
>>>
请输入要打开的文件: tttt.txt
请输入需要显示该文件的前几行: 13

文件tttt.txt的前12行内容如下:

小客服: 小甲鱼,今天有客户问你是不是傻逼

小甲鱼: 卧槽

小客服: 不要激动

小甲鱼: 这个人真没素质

小客服: 你想知道我怎么回答他的吗

小甲鱼: 你怎么回答的

小客服: 是,恭喜你回答正确

小甲鱼: 卧槽,塑料友情

小客服: 其实那么客户是个妹子

小甲鱼: 好看不

小客服: 想知道啊,一百元

小甲鱼: 傻吊,再见

小客服: 逗你玩呢

================================================================

def open_file(file_name,file_len):
f = open(file_name,'a+')
for each in range(file_len):
seq = f.readline()
print(seq, '\n')
f.close()
if __name__ == "__main__":
file_name = raw_input('请输入要打开的文件:')
file_len = int(raw_input('请输入需要显示该文件的前几行:'))
open_file(file_name,file_len)

 

3 呃,不得不说我们的用户变得越来越刁钻了。要求在上一题的基础上扩展,用户可以随意输入需要显示的行数。
(如:输入13:21打印第13行到第21行,输入:21打印前21行,输入21:则打印从21行到文件结尾的
所有内容)

 4 编写一个程序,实现全部替换功能,程序实现如图:

>>> 请输入文件名: record.txt

请输入需要替换的单词或字符: 小甲鱼

 

# coding=UTF-8
def file_replace(file_name, rep_word, new_word):
f_read = open(file_name)
file = f_read.readlines()

content = []
count = 0

for eachline in file:
if rep_word in eachline:
# 统计对象中出现的次数 .count(obj)
count = eachline.count(rep_word)
# stringObj.replace(rgExp, replaceText)
# stringObj 必选项。要执行该替换的 String 对象或字符串文字。该字符串不会被 replace 方法修改。
# rgExp 必选项。为包含正则表达式模式或可用标志的正则表达式对象。也可以是 String 对象或文字。如果 rgExp 不是正则表达式对象,它将被转换为字符串,并进行精确的查找;不要尝试将字符串转化为正则表达式。
# replaceText 必选项。是一个String 对象或字符串文字,对于stringObj 中每个匹配 rgExp 中的位置都用该对象所包含的文字加以替换。在 Jscript 5.5 或更新版本中,replaceText 参数也可以是返回替换文本的函数。
eachline = eachline.replace(rep_word, new_word)
content.append(eachline)

decide = raw_input('\n文件 %s 中共有 %s 个 [%s] \n你确定要把所有的[%s]替换为[%s]吗?\n[YES/NO]: '\
% (file_name, count, rep_word, rep_word, new_word))
if decide in ['YES', 'Yes', 'yes']:
f_write = open(file_name,'w')
f_write.writelines(content)
f_write.close()

f_read.close()

file_name = raw_input('请输入文件名: ')
rep_word = raw_input('请输入需要替换的单词或字符: ')
new_word = raw_input('请输入新的单词或字符: ')
file_replace(file_name, rep_word, new_word)

 



posted @ 2018-11-01 17:31  蘑菇慢慢  阅读(221)  评论(0)    收藏  举报