笨方法学Python的心得体会-EX20

经过了一段时间的学习,终于跟着《笨方法学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好的,收工,( ^_^ )/~~拜拜')

这样就可以实现知道文件有多少行,需要看第几行的功能啦
啦啦啦啦啦


这条代码打了一下午,但是收获还是有的
发上来分享一下

你可能感兴趣的:(笨方法学Python的心得体会-EX20)