经过了一段时间的学习,终于跟着《笨方法学Python》慢慢学到了第20题
是的,第20题,进度有够慢的,大写加粗的囧
上班了之后再学习的精力和速度确实比不上在学校时候的高效;但是,学习从来就不是百米冲刺,而是马拉松,所以,相信多琢磨,总是会有进步的。
今天在练习过程中,想着把前几道练习题的知识点全部揉在这一题里面,将知识点穿插,创造新的有意思的环境和挑战。包括os.path中的exists和sys中的argv
,一起上台。
将一个原本是读取一存在文件,并打印出来的题目变成了,判断指定文件是否存在->是否修改/编辑文件->统计文件行数->打印某一行,这种复杂一些的任务。
在练习过程中遇到了诸如,While
函数的缺失导致break
函数的引用错误,和打印文件中某行文件时候的游标重置问题。
打怪升级的日子里,还好有学习小组的各位大神帮忙打助攻,不然也是一囧到底的。
好,就分开附上各路代码吧。
# @Program:Exercies20
# @Name:WeiChat威威威
# @Time:2017.6.10
from sys import argv
from os.path import exists
script, input_file = argv
def print_all(f):
print (f.read())
def rewind(f):
f.seek(0)
def print_a_line(line_count, f):
f.seek(0)
Cal = int(line_count)
Cal2 = Cal - 1
print('这是第 %d 行' % Cal)
print (f.readlines()[Cal2])
首先自定义各路函数,f.read(), f.readline(), f.readlines()
的用法还真的不一样。
建议全盘打印时候用f.read()
判断文件行数时候用len(f.readlines())
print ('存在一个这样的文件吗? %r' % exists(input_file))
if exists(input_file):
Judge_1st = input('是否要对这个文件进行修改?(是/否): ')
if Judge_1st != '否':
Judge_2nd = input('是否要删除原文件所有内容?(是/否): ')
if Judge_2nd != '否':
current_file = open(input_file, 'w')
print ('现在正在删除原文件内容......')
print('请输入你想要输入的内容: \n')
while True:
line = input('>>: ')
if line !='.':
current_file.write(line)
current_file.write('\n')
else:
current_file.close()
break
else:
current_file = open(input_file, 'a')
print('请输入你想要输入的内容: \n')
while True:
line = input('>>: ')
if line !='.':
current_file.write(line)
current_file.write('\n')
else:
current_file.close()
break
else:
Judge_1st = input('是否要添加这样的文件?(请输入 是/否):')
if Judge_1st != '否':
current_file = open(input_file, 'w')
print('请输入你想要输入的内容: \n')
while True:
line = input('>>: ')
if line != '.':
current_file.write(line)
current_file.write('\n')
else:
current_file.close()
break
else:
print('\n好的收工,( ^_^ )/~~拜拜')
这里的思路是,先判断是否存在这个文件,不存在的话是否要新建,否则结束。若存在文件是否要修改文件
open(file, 'a')
,a是会在文件末尾直接添加输入der
open(file, 'w')
,w是会直接覆盖原文件内容der
Judge_3st = input('是否想查看 % r (请输入:是/否): ' % input_file)
if Judge_3st != '否':
current_file = open(input_file, 'r')
num = len(current_file.readlines())
#print ('First let\'s print the whole file : \n')
# print_all(current_file)
print ('Now let\'s rewind, kind of like a tape.')
rewind(current_file)
print ('Let\'s print the lines you want: ')
print('文件有 %d 行' % num)
while True:
wline = input('你希望看到文件的第几行?(请输入数字): ')
if wline != 'enough':
print_a_line(wline, current_file)
else:
print('\n好的收工,( ^_^ )/~~拜拜')
break
else:
print ('\n好的,收工,( ^_^ )/~~拜拜')
这样就可以实现知道文件有多少行,需要看第几行的功能啦
啦啦啦啦啦
这条代码打了一下午,但是收获还是有的
发上来分享一下