在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ exercise20. 函數(shù)和文件
附錄 A-練習(xí) 9:生成一個(gè)空文件(Touch, New-Item)
附錄 A-練習(xí) 10:復(fù)制文件 (cp)
exercise44.繼承 Vs.包含
附錄 A-練習(xí) 14:刪除文件 (rm)
附錄 A-練習(xí) 11:移動(dòng)文件 (mv)
exercise46.項(xiàng)目骨架
附錄 A-練習(xí) 3:如果你迷路了
exercise37.復(fù)習(xí)符號(hào)
exercise47.自動(dòng)化測(cè)試
exercise3.數(shù)字和數(shù)學(xué)計(jì)算
附錄 A-練習(xí) 1:安裝
exercise32.循環(huán)和列表
exercise31.做出決定
exercise42.對(duì)象、類、以及從屬關(guān)系
exercise48.更復(fù)雜的用戶輸入
下一步
簡(jiǎn)介
附錄 A-練習(xí) 7:刪除路徑 (rmdir)
exercise49.寫代碼語(yǔ)句
exercise18.命名, 變量, 代碼, 函數(shù)
exercise12.提示別人
exercise14.提示和傳遞
exercise40.模塊, 類和對(duì)象
附錄 A-練習(xí) 12:查看文件 (less, MORE)
exercise9.打印, 打印, 打印
exercise13.參數(shù), 解包, 變量
exercise30. Else 和 If
exercise28. 布爾表達(dá)式
附錄 A-練習(xí) 4:創(chuàng)建一個(gè)路徑 (mkdir)
附錄 A-練習(xí) 15:退出命令行 (exit)
exercise25. 更多更多的練習(xí)
exercise6.字符串和文本
exercise2.注釋和井號(hào)“#”
exercise21. 函數(shù)的返回值
附錄 A-下一步
exercise1.第一個(gè)程序
exercise23. 閱讀代碼
附錄 A-練習(xí) 5:改變當(dāng)前路徑 (cd)
exercise17.更多文件操作
exercise24. 更多的練習(xí)
exercise19.函數(shù)和變量
exercise51.從瀏覽器獲取輸入
exercise22. 到目前為止你學(xué)到了什么?
exercise41.學(xué)會(huì)說(shuō)面向?qū)ο?/span>
exercise52.開(kāi)始你的 web 游戲
exercise20. 函數(shù)和文件
exercise15.讀文件
exercise45.你來(lái)制作一個(gè)游戲
exercise10.那是什么?
exercise8.打印, 打印
exercise35.分支和函數(shù)
exercise26. 恭喜你,可以進(jìn)行一次考試了
exercise33.while 循環(huán)
exercise29. IF 語(yǔ)句
exercise36.設(shè)計(jì)和調(diào)試
exercise0.安裝和準(zhǔn)備
exercise50.你的第一個(gè)網(wǎng)站
附錄 A-練習(xí) 2:路徑, 文件夾, 名錄 (pwd)
exercise38.列表操作
附錄 A-練習(xí) 6:列出當(dāng)前路徑 (ls)
exercise16.讀寫文件
exercise4.變量和命名
exercise34.訪問(wèn)列表元素
exercise11.提問(wèn)
exercise43.基本的面向?qū)ο蟮姆治龊驮O(shè)計(jì)
附錄 A-簡(jiǎn)介
附錄 A-練習(xí) 8:目錄切換(pushd, popd)
來(lái)自老程序員的建議
exercise27. 記住邏輯
exercise5.更多的變量和打印
exercise7.更多的打?。ㄝ敵觯?/span>
附錄 A-練習(xí) 13:輸出文件 (cat)
exercise39.字典,可愛(ài)的字典

exercise20. 函數(shù)和文件

回憶一下函數(shù)的要點(diǎn),然后一邊做這節(jié)練習(xí),一邊注意一下函數(shù)和文件是如何在一起協(xié)作發(fā)揮作用的。

from sys import argv

script, input_file = argv

def print_all(f):
    print f.read()

def rewind(f):
    f.seek(0)

def print_a_line(line_count, f):
    print line_count, f.readline()

current_file = open(input_file)

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 three lines:"

current_line = 1
print_a_line(current_line, current_file)

current_line = current_line + 1
print_a_line(current_line, current_file)

current_line = current_line + 1
print_a_line(current_line, current_file)

特別注意一下,每次運(yùn)行 print_a_line 時(shí),我們是怎樣傳遞當(dāng)前的行號(hào)信息的。

你看到的結(jié)果

$ python ex20.py test.txt
First let's print the whole file:

This is line 1
This is line 2
This is line 3

Now let's rewind, kind of like a tape.
Let's print three lines:
1 This is line 1

2 This is line 2

3 This is line 3

附加題

1.通讀腳本,在每行之前加上注解,以理解腳本里發(fā)生的事情。 2.每次 print_a_line 運(yùn)行時(shí),都傳遞了一個(gè)叫 current_line 的變量。在每次調(diào)用函數(shù)時(shí),打印出 current_line 的值,跟蹤一下它在 print_a_line 中是怎樣變成 line_count 的。 3.找出腳本中每一個(gè)用到函數(shù)的地方。檢查 def 一行,確認(rèn)參數(shù)沒(méi)有用錯(cuò)。 4.上網(wǎng)研究一下 file 中的 seek 函數(shù)是做什么用的。試著運(yùn)行 pydoc file 看看能不能學(xué)到更多。 5.研究一下+=這個(gè)簡(jiǎn)寫操作符的作用,寫一個(gè)腳本,把這個(gè)操作符用在里邊試一下。

常見(jiàn)問(wèn)題

Q:函數(shù) print_all 中的 f 是什么?

f 就是一個(gè)變量,就好像在練習(xí) 18 中其他的變量一樣,只不過(guò)這次它代表了一個(gè)文件。 Python 中的文件就好像老舊的磁帶驅(qū)動(dòng)器,或者是像現(xiàn)在的 DVD 播放器。它有一個(gè) "磁頭",你可以在文件中"查找"到這個(gè)磁頭的位置,并且從那個(gè)位置開(kāi)始運(yùn)行。你每執(zhí)行一次 f.seek(0),就靠近文件的開(kāi)頭一點(diǎn)。每執(zhí)行一次 f.readline()你就從文件中讀取一行內(nèi)容,并且把“磁頭”移動(dòng)到文件末尾,換行符\n 的后面。繼續(xù)學(xué)習(xí)本書,你會(huì)看到更多的解釋。

Q: 文件中為什么有 3 個(gè)空行?

函數(shù) readline() 返回一行以\n 結(jié)尾的文件內(nèi)容, 在你調(diào)用 print 函數(shù)的最后增加一個(gè)逗號(hào)',',用來(lái)避免為每一行添加兩個(gè)換行符\n。

Q:為什么 seek(0)方法沒(méi)有把 current_line 的值修改為 0?

首先,seek()方法是按字節(jié)而不是按行為處理單元的。代碼 seek(0)重新定位在文件的第 0 位(第一個(gè)字節(jié)處)。再次,current_line 是一個(gè)變量,在文件中沒(méi)有真正的意義可言。我們是在手動(dòng)的增加它的值。

Q:+=是什么?

你應(yīng)該知道在英語(yǔ)里我們可以簡(jiǎn)寫 "it is" 為 "it's",簡(jiǎn)寫 "you are" 為 "you're"。在英語(yǔ)里我們把這種寫法稱為縮寫,同樣的,+=是 =和 +兩個(gè)操作符的縮寫. 比如 x = x + y 可以縮寫為 x += y.

Q:readline()怎么知道每一行的分界在哪里?

readline()內(nèi)部代碼是掃描文件的每一個(gè)字節(jié),直到找到一個(gè)\n 字符代碼,然后停止閱讀,并返回到此之前獲得的所有內(nèi)容。代碼中 f 的責(zé)任是在每次調(diào)用 readline()之后,維護(hù)“磁頭”在文件中的位置,以保證繼續(xù)讀后面的每一行。