亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

習(xí)題 15: 讀取文件?

你已經(jīng)學(xué)過了 raw_inputargv,這些是你開始學(xué)習(xí)讀取文件的必備基礎(chǔ)。你可能需要多多實(shí)驗(yàn)才能明白它的工作原理,所以你要細(xì)心做練習(xí),并且仔細(xì)檢查結(jié)果。處理文件需要非常仔細(xì),如果不仔細(xì)的話,你可能會(huì)吧有用的文件弄壞或者清空。導(dǎo)致前功盡棄。

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

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 寫死(hardcode)在代碼中不是一個(gè)好主意,這些信息應(yīng)該是用戶輸入的才對(duì)。如果我們碰到其他文件要處理,寫死的文件名就會(huì)給你帶來麻煩了。我們的解決方案是使用 argvraw_input 來從用戶獲取信息,從而知道哪些文件該被處理。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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()

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

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

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

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

你應(yīng)該看到的結(jié)果?

我的腳本叫 “ex15_sample.txt”,以下是執(zhí)行結(jié)果:

$ 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.


$

加分習(xí)題?

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

  1. 在每一行的上面用注解說明這一行的用途。
  2. 如果你不確定答案,就問別人,或者上網(wǎng)搜索。大部分時(shí)候,只要搜索 “python” 加上你要搜的東西就能得到你要的答案。比如搜索一下“python open”。
  3. 我使用了“命令”這個(gè)詞,不過實(shí)際上它們的名字是“函數(shù)(function)”和“方法(method)。上網(wǎng)搜索一下這兩者的意義和區(qū)別??床幻靼滓矝]關(guān)系,迷失在別的程序員的知識(shí)海洋里是很正常的一件事情。
  4. 刪掉 10-15 行使用到 raw_input 的部分,再運(yùn)行一遍腳本。
  5. 只是用 raw_input 寫這個(gè)腳本,想想那種得到文件名稱的方法更好,以及為什么。
  6. 運(yùn)行 pydoc file 向下滾動(dòng)直到看見 read() 命令(函數(shù)/方法)??吹胶芏鄤e的命令了吧,你可以找?guī)讞l試試看。不需要看那些包含 __ (兩個(gè)下劃線)的命令,這些只是垃圾而已。
  7. 再次運(yùn)行 python 在命令行下使用 open 打開一個(gè)文件,這種 open 和 read 的方法也值得你一學(xué)。
  8. 讓你的腳本針對(duì) txt and txt_again 變量執(zhí)行一下 close() ,處理完文件后你需要將其關(guān)閉,這是很重要的一點(diǎn)。

Project Versions

Table Of Contents

Previous topic

習(xí)題 14: 提示和傳遞

Next topic

習(xí)題 16: 讀寫文件

This Page