|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 胖豆lucky 于 2018-12-11 14:01 编辑
第0题:编写一个程序,接受用户的输入并保存为新的文件。
- def file_write(file_name):
- f = open(file_name,'w') #①这里不能写成'D:\\file_name',不然文件名字就改不了了!
- print("请输入内容【单独输入':w'保存退出】:")
- while True:
- content = input("")
- if content != ":w":
- f.write('%s\n' % content) #②换行以及格式化字符串的用法
- else:
- break
-
- f.close() #③涉及到写关于文件的代码一开始就把close()写上以防忘记
- file_name = input("请输入文件名:")
- file_write(file_name)
复制代码
知识点:
1.关于换行\n
2.格式化字符串用法(思路:字符串→相关用法)
第1题:编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置。
- def file_compare(file_name1,file_name2):
- f1 = open(file_name1)
- f2 = open(file_name2)
- count = 0
- differ = []
- for line1 in f1:
- line2 = f2.readline()
- count += 1
- if line1 != line2:
- differ.append(count)
- f1.close()
- f2.close()
- return differ #①
- file_name1 = input("请输入需要比较的头一个文件名:")
- file_name2 = input("请输入需要比较的另一个文件名:")
- differ = file_compare(file_name1,file_name2) #②
- length = len(differ)
- if length == 0:
- print("两个文件完全一样")
- else:
- print("两个文件共有【%d】处不同:" % length)
- for i in differ:
- print("第 %d 行不一样" % i)
复制代码
知识点:
1. readline()是一行“接着”一行的读取的,别忘了指针这个东西!
2.①②处,返回值
3.计数的另一种方法:利用 list.append()
第2题:编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏幕上。
我的方法:
- def file_print(file_name,number):
- f = open(file_name)
- print("\n文件" + file_name + "的前" + number +"行的内容如下:\n")
- count = 0
- while int(count) < int(number):
- print(f.readline(),end='') #f.readline()需要输出
- count +=1
- f.close()
-
- file_name = input("请输入要打开的文件:")
- number = input("请输入需要显示该文件前几行:")
- file_print(file_name,number)
复制代码
JY的方法:
- def file_view(file_name, line_num):
- print('\n文件%s的前%s的内容如下:\n' % (file_name, line_num))
- f = open(file_name)
- for i in range(int(line_num)):
- print(f.readline(), end= '')
- f.close()
- file_name = input(r'请输入要打开的文件(C:\\test.txt):')
- line_num = input('请输入需要显示该文件前几行:')
- file_view(file_name, line_num)
复制代码
知识点:f.readline()
第3题:要求在上一题的基础上扩展,用户可以随意输入需要显示的行数。
这里的复杂性在于有“开始”,“末尾”,“全文”等字眼,所以设了begin=‘1’,end=‘-1’,之所以设成字符串,是因为在输出的时候需是字符串。
- def file_print(file_name,number):
- if number.strip() == ":":
- begin = '1'
- end = '-1' #为了全文
-
- (begin,end)=number.split(":",1) #先想到要把它拆分开来→字符串→字符串的方法有一个split()
- if begin == "":
- begin = '1'
- if end == "":
- end = '-1'
- if begin == '1':
- print("\n文件%s从开始到第%s行的内容如下:\n" % (file_name,end))
- if end == '-1':
- print("\n文件%s从第%s到末尾的内容如下:\n" % (file_name,begin))
- if (begin != '1') and (end != '-1'):
- print("\n文件%s从第%s行到第%s行的内容如下:\n" % (file_name,begin,end))
- if (begin == '1') and (end == '-1'):
- print("\n文件的全文的内容如下:\n" % (file_name))
- begin = int(begin)-1
- end = int(end)
- length = end - begin
- f=open(file_name)
- for i in range(begin):
- f.readline() #把前面的几次读取完,使指针指向这里
- if length > 0:
- for i in range(length):
- print(f.readline(),end='')
- else:
- print(f.read())
- f.close() #先写好close()
- #难点在于行数不好算,因为有结束、开始、全部这种词语,得把它们数量化才可以
- file_name = input("请输入要打开的文件:")
- number = input("请输入需要显示的行数【格式如13:21或:21或21:】:")
- file_print(file_name,number)
复制代码
未解决问题:第4题+视频
|
|