国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python 文件和輸入輸出小結

2019-11-25 18:38:45
字體:
來源:轉載
供稿:網友

1.打開和關閉文件(open(),file(),close())

有兩種內建函數可以獲取文件對象:open和file。他們的用法完全一樣。下面只以open()為例子講解。獲取一個文件對象(打開文件)的語法如下:       

復制代碼 代碼如下:
fileObj = open(filename,access_mode='r',buffering=-1) 

filename不用說你也應該知道是你要打開文件的路徑。
access_mode用來標識文件打開的模式,默認為r(只讀)。

常用的模式如下表所示:

文件模式解釋
r以只讀方式打開
w以寫方式打開,文件不為空時清空文件;文件不存在時新建文件。
a追加模式,沒有則創建
r+,w+,a+以讀寫模式打開,參見w,a

另外還有一個b表示二進制模式訪問,但是對于Linux或者unix系統來說這個模式沒有任何意義,因為他們把所有文件都看作二進制文件,包括文本文件。


第三個參數不經常用到,標識訪問文件的緩沖方式,0代表不緩沖,1代表緩
沖一行,-1代表使用系統默認緩沖方式。只要使用系統默認就好。

一些例子:

復制代碼 代碼如下:

>>> f = open('/etc/passwd','r')
>>> f1 = open('/etc/test','w')

使用完文件后,一定要記得關閉文件,操作如下:

復制代碼 代碼如下:

>>> f.close()

2.文件讀入

2.1.file.read(size = -1)
    讀取從當前文件游標起size個字節的文件內容。如果size=-1,則讀取所有剩余字節。

復制代碼 代碼如下:

>>> f = open('/etc/passwd')
>>> f.read(100)
'root:x:0:0:root:/root:/bin/bash/nbin:x:1:1:bin:/bin:/sbin/nologin/ndaemon:x:2:2:daemon:/sbin:/sbin/nol'

2.2.file.readlines(size=-1)

    從文件中讀取并返回一行(包括行結束符),或返回最大size個字符

復制代碼 代碼如下:

>>> f.readline()
'ogin/n'#和上面一個例子輸出的最后拼起來就是  'nologin',因為游標在l后面。
>>> f.readline(1)
'a'

2.3.file.readlines(sizhint=0)
    讀取文件所有的行,并作為一個列表返回(包括行結束符),如果sizhint>0則返回總和大約sizhint字節的行(具體由緩沖區大小決定)。

復制代碼 代碼如下:

f.readlines()
['dm:x:3:4:adm:/var/adm:/sbin/nologin/n', 'lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin/n', 'sync:x:5:0:sync:/sbin:/bin/sync/n', 'shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown/n', 'halt:x:7:0:halt:/sbin:/sbin/halt/n', 'mail:x:8:12:mail:/var/spool/mail:/sbin/nologin/n', ......

輸出省略。

3.文件輸出

3.1.file.write(str)
    向文件中寫入指定的字符串。

復制代碼 代碼如下:

>>> f = file('/root/test.py','w+')
>>> f.write("print 'hello,world'")
>>> f.read()
''
>>> f.close()
>>> file('/root/test.py','r').read()
"print 'hello,world'"

3.2.file.write(seq)

    向文件寫入字符串序列seq。seq是任何返回字符串的可迭代對象。

復制代碼 代碼如下:

>>> f = file('/root/test.py','a+')
>>> codelst = ['/n','import os/n',"os.popen('ls').read()/n"]
>>> f.writelines(codelst)
>>> f.close()
>>> file('/root/test.py','r').read()
"print 'hello,world'/nimport os/nos.popen('ls').read()/n"

注意,文件寫入的時候,不會自動加上換行符,必須手動加上。

4.文件移動

    學過C語言的同學,一定對fseek()函數不陌生,在Python中,seek()方法是fseek()的替代者。

    seek(offset,whence=0)
    方法可以將文件游標移動到文件的任意位置。其中offset代表需要移動的偏移字節數,whence表示要從哪個位置開始偏移:
    0代表從文件開頭開始算起,
    1代表從當前位置開始算起,
    2代表從文件末尾算起。

    那我們如何知道當前文件游標在哪里呢?別擔心,這里有個tell()方法可以返回當前文件游標的位置。

5.文件迭代

    在Python中,文件不僅僅是一個對象,而且是一個可迭代對象!我們可以利用如下迭代方式,輕松的訪問和處理文件內容,而不必全部讀出(readlines)后再迭代(性能上差了很多哦!)

復制代碼 代碼如下:

for eachline in f:
    #dealwith eachline of f

例如:

復制代碼 代碼如下:

>>> for eachline in f:
...     print eachline

6.os、os.path與文件

os和os.path中提供了一些跟文件有關的接口,下面介紹一些常用的接口。其他接口可以自己查閱相關文檔。

注意:以下函數傳入的參數都是字符串形式的文件名字,文件名可由文件對象的name屬性獲得。

函數描述
os.path.basename()去掉目錄路徑,返回文件名
os.path.dirname()去掉文件名,返回目錄路徑
os.path.getatime()
os.path.getctime()
os.path.getmtime()
os.path.size()
返回文件的atime,ctime,mtime和大小
os.path.exists()該文件或目錄是否存在
os.path.abs()指定路徑是否為絕對路徑
os.path.isdir()路徑是否存在且為目錄
os.path.isfile()路徑是否存在且為文件。
os.path.islink()指定路徑是否存在且為一個符號鏈接

復制代碼 代碼如下:

>>> import os.path
>>> f = open('/root/test.py','r')
>>> os.path.basename(f.name)
'test.py'
>>> f.name
'/root/test.py'
>>> os.path.getsize(f.name)
52
>>> os.path.isabs(f.name)
True
>>> os.path.isdir(f.name)
False

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥东县| 崇阳县| 阜新市| 刚察县| 三台县| 汉源县| 武功县| 蒙阴县| 屏南县| 金湖县| 江山市| 墨竹工卡县| 阿荣旗| 武川县| 保靖县| 琼结县| 宝山区| 新巴尔虎左旗| 永州市| 阆中市| 兴业县| 襄城县| 冕宁县| 灌阳县| 集贤县| 民和| 南充市| 高清| 金寨县| 电白县| 囊谦县| 酒泉市| 建阳市| 潮州市| 镶黄旗| 灌阳县| 资兴市| 突泉县| 额尔古纳市| 白朗县| 伊春市|