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

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

exercise15.讀文件

你已經(jīng)學過 raw_input 和 argv,這些是你開始學習讀取文件的必備基礎。你可能需要多多實驗才能明白它的工作原理,所以你要細心做練習,并且仔細檢查結果。處理文件需要非常仔細,否則,你可能會把有用的文件弄壞或者清空。導致前功盡棄。

這節(jié)練習涉及到寫兩個文件。一個正常的 ex15.py 文件,另外一個是 ex15_sample.txt,第二個文件并不是腳本,而是供你的腳本讀取的文本文件。以下是后者的內容:

This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.

我們要做的是用我們的腳本“打開(open)”這個文件,然后打印出來。然而把文件名 ex15_sample.txt 寫死在代碼中并不是一個好主意,這些信息應該是用戶輸入的才對。如果我們碰到其他文件要處理,寫死的文件名就會給你帶來麻煩了。我們的解決方案是使用 argv 和 raw_input 來從用戶獲取信息,從而知道哪些文件該被處理。

from sys import argv

script, filename = argv

txt = open(filename)

print "Here's your file %r:" % filename
print txt.read()

print "Type the filename again:"
file_again = raw_input("> ")

txt_again = open(file_again)

print txt_again.read()

這個腳本中有一些新奇的玩意,我們來快速地過一遍:

代碼的 1-3 行使用 argv 來獲取文件名,這個你應該已經(jīng)熟悉了。接下來第 5 行我們看到 open 這個新命令?,F(xiàn)在請在命令行運行 pydoc open 來讀讀它的說明。你可以看到它和你自己的腳本、或者 raw_input 命令類似,它會接受一個參數(shù),并且返回一個值,你可以將這個值賦予一個變量。這就是你打開文件的過程。

第 7 行我們打印了一小行信息,但在第 8 行我們看到了新奇的東西。我們在 txt 上調用了一個函數(shù)。你從 open 獲得了一個文件,文件本身也支持一些命令。它接受命令的方式是使用句點 . (英文稱作 dot 或者 period),緊跟著你的命令,然后是類似 open 和 raw_input 一樣的參數(shù)。不同點是:當你執(zhí)行 txt.read 時,你的意思其實是:“嘿 txt!執(zhí)行你的 read 命令,無需任何參數(shù)!”

腳本剩下的部分基本差不多,不過我就把剩下的分析作為附加題留給你自己了。

你看到的結果

我創(chuàng)建了一個名字叫做 ex15_sample.txt 的文件,然后執(zhí)行我的腳本:

$ python ex15.py ex15_sample.txt
Here's your file 'ex15_sample.txt':
This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.

Type the filename again:
>  ex15_sample.txt
This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.

附加題

這節(jié)的難度跨越有點大,所以你要盡量做好這節(jié)加分習題,然后再繼續(xù)后面的章節(jié)。

1.在每一行的上面加上注釋。 2.如果你不確定答案,就問別人,或者上網(wǎng)搜索。大部分時候,只要搜索 “python” 加上你要搜的東西就能得到你要的答案。比如搜索一下“python open”。 3.我使用了“命令”這個詞,不過實際上它們的名字是“函數(shù)(function)”和“方法(method)。上網(wǎng)搜索一下這兩者的意義和區(qū)別。看不明白也沒關系,這本書后面也會講到這些。 4.刪掉 10-15 行使用到 raw_input 的部分,再運行一遍腳本。 5.只用 raw_input 寫這個腳本,想想哪種得到文件名稱的方法更好?為什么? 6.運行 python 在命令行下使用 open 打開一個文件,這種 open 和 read 的方法也值得你一學。 7.讓你的腳本對 txt 和 txt_again 兩個變量執(zhí)行一下 close(),處理完文件后你需要將其關閉,這是很重要的一點。

常見問題

Q:txt = open(filename)返回的是文件的文本內容嗎?

不是的。它的返回值我們稱為“文件對象”。你可以把文件想象成 19 世紀 50 年代的大型計算機上的老舊的磁帶驅動器, 或者是像現(xiàn)在的 DVD 播放器,你可以在他們內部走動,然后閱讀他們。但是文件對象并不是文件的文本內容一樣就好像 DVD 播放器也不是一個 DVD 視頻.

Q:我不能按照你在附加題 7 中說的那樣在命令行輸入代碼

首先,在命令行里輸入 python 并回車,現(xiàn)在你已經(jīng)進入了一個 python 解析器。接下來你就可以輸入一系列的代碼,python 會一一執(zhí)行你的代碼。最后別忘了輸入 quit()并回車退出 python。

Q:當我打開同一個文件兩次的時候,為什么不會報錯?

Python 不會限制你只能打開一個文件一次,有時這是必要的。

Q:from sys import argv 這句是什么意思?

目前來說,你可以認為 sys 是一個包,這句代碼的意思是從 sys 的包中引入 argv 功能模塊。

Q: 我把文件的名字放進腳本中,ex15_sample.txt = argv,卻沒有生效。

你不能這么寫,請按照我的示例寫代碼,并像我一樣在命令行里運行腳本。