《笨辦法學(xué)Python》筆記13-----讀取文件

raw_input 和 argv 是操作文件的基礎(chǔ),不熟悉的需要回到上節(jié)繼續(xù)練習(xí)。

一、代碼分析

#coding:utf-8

from sys import argv ?#導(dǎo)入模塊

script, filename = argv ? #獲取腳本名和文件名

txt = open(filename) ? #打開(kāi)文件

print "Here's your file %r:" % filename

print txt.read() ?#讀取文件內(nèi)容

print "Type the filename again:"

file_again = raw_input("> ") #獲取用戶(hù)輸入

txt_again = open(file_again) #打開(kāi)文件

print txt_again.read() #讀取文件

這里有兩個(gè)新函數(shù)open() 和 read()。

首先在命令行下使用幫助,查看兩個(gè)函數(shù)的信息

1.open( )

E:\lszyy\python\examples>python -m pydoc open

Help on built-in function open in module __builtin__:

open(...)

open(name[, mode[, buffering]]) -> file object

Open a file using the file() type, returns a file object.? This is the

preferred way to open a file.? See file.__doc__ for further information.

注意open( )函數(shù)的參數(shù),文件名是必須的,打開(kāi)模式,緩沖區(qū)是可選的。

返回一個(gè)文件對(duì)象,以便后續(xù)對(duì)文件進(jìn)行操作,相當(dāng)于一個(gè)指向文件的指針。

2.read( )

E:\lszyy\python\examples>python -m pydoc read

no Python documentation found for 'read'

這樣查沒(méi)有任何信息,需輸入以下命令查詢(xún)r(jià)ead函數(shù)的幫助信息

E:\lszyy\python\examples>python -m pydoc file

按回車(chē)鍵,直到看到read函數(shù)的信息:

|? read(...)

|? ? ? read([size]) -> read at most size bytes, returned as a string.

|? ? ? If the size argument is negative or omitted, read until EOF is reached.

|? ? ? Notice that when in non-blocking mode, less data than what was requested

|? ? ? may be returned, even if no size parameter was given.

read函數(shù)有個(gè)最大字節(jié)數(shù)的參數(shù),返回一個(gè)字符串。

如果參數(shù)沒(méi)有給出,read直到EOF標(biāo)志出現(xiàn)。在非阻塞模式下,即使沒(méi)有給出size參數(shù),返回的數(shù)據(jù)可能少于請(qǐng)求的數(shù)據(jù)。

何謂非阻塞模式?

運(yùn)行代碼,輸入一個(gè)不存在的文件名,將獲得一個(gè)IO異常(IOError)

E:\lszyy\python\examples>python test4.py t.txt ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last):? File "test4.py", line 5, intxt = open(filename)

IOError: [Errno 2] No such file or directory: 't.txt'

新建一個(gè)文本測(cè)試文件:t.txt,輸入一些測(cè)試字符“123456789abcdefghijklmnopqrstuvwxyz”.

E:\lszyy\python\examples>python test4.py t.txt

Here's your file 't.txt':

123456789abcdefghijklmnopqrstuvwxyz

Type the filename again:

> t.txt

123456789abcdefghijklmnopqrstuvwxyz


二、open函數(shù)中的mode參數(shù)

讀寫(xiě)模式的類(lèi)型有:

r ? ? ?以讀方式打開(kāi), 同時(shí)提供通用換行符支持 (PEP 278)

w?????以寫(xiě)方式打開(kāi),

a?????以追加模式打開(kāi) (從 EOF 開(kāi)始, 必要時(shí)創(chuàng)建新文件)

r+?????以讀寫(xiě)模式打開(kāi)

w+?????以讀寫(xiě)模式打開(kāi) (參見(jiàn) w )

a+?????以讀寫(xiě)模式打開(kāi) (參見(jiàn) a )

rb?????以二進(jìn)制讀模式打開(kāi)

wb?????以二進(jìn)制寫(xiě)模式打開(kāi) (參見(jiàn) w )

ab?????以二進(jìn)制追加模式打開(kāi) (參見(jiàn) a )

rb+????以二進(jìn)制讀寫(xiě)模式打開(kāi) (參見(jiàn) r+ )

wb+????以二進(jìn)制讀寫(xiě)模式打開(kāi) (參見(jiàn) w+ )

ab+????以二進(jìn)制讀寫(xiě)模式打開(kāi) (參見(jiàn) a+ )

注意:

1、使用'W',文件若存在,首先要清空,然后(重新)創(chuàng)建,

2、使用'a'模式 ,把所有要寫(xiě)入文件的數(shù)據(jù)都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,將自動(dòng)被創(chuàng)建。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容