經(jīng)過了一段時(shí)間的學(xué)習(xí),終于跟著《笨方法學(xué)Python》慢慢學(xué)到了第20題
是的,第20題磕瓷,進(jìn)度有夠慢的,大寫加粗的囧
上班了之后再學(xué)習(xí)的精力和速度確實(shí)比不上在學(xué)校時(shí)候的高效念逞;但是困食,學(xué)習(xí)從來就不是百米沖刺,而是馬拉松翎承,所以硕盹,相信多琢磨,總是會(huì)有進(jìn)步的叨咖。
今天在練習(xí)過程中瘩例,想著把前幾道練習(xí)題的知識(shí)點(diǎn)全部揉在這一題里面啊胶,將知識(shí)點(diǎn)穿插,創(chuàng)造新的有意思的環(huán)境和挑戰(zhàn)垛贤。包括os.path中的exists和sys中的argv
焰坪,一起上臺(tái)。
將一個(gè)原本是讀取一存在文件南吮,并打印出來的題目變成了琳彩,判斷指定文件是否存在->是否修改/編輯文件->統(tǒng)計(jì)文件行數(shù)->打印某一行,這種復(fù)雜一些的任務(wù)部凑。
在練習(xí)過程中遇到了諸如露乏,While
函數(shù)的缺失導(dǎo)致break
函數(shù)的引用錯(cuò)誤,和打印文件中某行文件時(shí)候的游標(biāo)重置問題涂邀。
打怪升級(jí)的日子里瘟仿,還好有學(xué)習(xí)小組的各位大神幫忙打助攻,不然也是一囧到底的比勉。
好劳较,就分開附上各路代碼吧。
# @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])
首先自定義各路函數(shù)浩聋,f.read(), f.readline(), f.readlines()
的用法還真的不一樣观蜗。
建議全盤打印時(shí)候用f.read()
判斷文件行數(shù)時(shí)候用len(f.readlines())
print ('存在一個(gè)這樣的文件嗎? %r' % exists(input_file))
if exists(input_file):
Judge_1st = input('是否要對(duì)這個(gè)文件進(jìn)行修改衣洁?(是/否): ')
if Judge_1st != '否':
Judge_2nd = input('是否要?jiǎng)h除原文件所有內(nèi)容墓捻?(是/否): ')
if Judge_2nd != '否':
current_file = open(input_file, 'w')
print ('現(xiàn)在正在刪除原文件內(nèi)容......')
print('請(qǐng)輸入你想要輸入的內(nèi)容: \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('請(qǐng)輸入你想要輸入的內(nèi)容: \n')
while True:
line = input('>>: ')
if line !='.':
current_file.write(line)
current_file.write('\n')
else:
current_file.close()
break
else:
Judge_1st = input('是否要添加這樣的文件?(請(qǐng)輸入 是/否):')
if Judge_1st != '否':
current_file = open(input_file, 'w')
print('請(qǐng)輸入你想要輸入的內(nèi)容: \n')
while True:
line = input('>>: ')
if line != '.':
current_file.write(line)
current_file.write('\n')
else:
current_file.close()
break
else:
print('\n好的收工坊夫,( ^_^ )/~~拜拜')
這里的思路是砖第,先判斷是否存在這個(gè)文件,不存在的話是否要新建环凿,否則結(jié)束梧兼。若存在文件是否要修改文件
open(file, 'a')
,a是會(huì)在文件末尾直接添加輸入der
open(file, 'w')
智听,w是會(huì)直接覆蓋原文件內(nèi)容der
Judge_3st = input('是否想查看 % r (請(qǐng)輸入:是/否): ' % 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('你希望看到文件的第幾行羽杰?(請(qǐng)輸入數(shù)字): ')
if wline != 'enough':
print_a_line(wline, current_file)
else:
print('\n好的收工,( ^_^ )/~~拜拜')
break
else:
print ('\n好的到推,收工忽洛,( ^_^ )/~~拜拜')
這樣就可以實(shí)現(xiàn)知道文件有多少行,需要看第幾行的功能啦
啦啦啦啦啦
這條代碼打了一下午环肘,但是收獲還是有的
發(fā)上來分享一下