Python如何實(shí)用File文件的實(shí)現(xiàn)
1、讀寫文件
open()將會(huì)返回一個(gè)file對(duì)象,基本語(yǔ)法:
open(filename,mode)
ilename:是一個(gè)包含了訪問的文件名稱的路徑字符串
mode:決定了打開文件的模式:只讀,寫入,追加等,默認(rèn)文件訪問模式為只讀®
不同模式打開文件的列表:
- r:以只讀的方式打開文件,文件的指針將會(huì)放在文件的開頭,為默認(rèn)模式
- rb:以二進(jìn)制格式打開一個(gè)文件用于只讀,文件指針會(huì)在文件的開頭
- r+:打開一個(gè)文件用于讀寫,文件指針將會(huì)在文件的開頭
- rb+:以二進(jìn)制格式打開一個(gè)文件用于讀寫,文件指針會(huì)放在文件的開頭
- w:打開一個(gè)文件用于寫入,如果該文件已存在則將會(huì)覆蓋文件,如果不存在則創(chuàng)建新文件
- wb:以二進(jìn)制打開一個(gè)文件用于寫入
- w+:打開一個(gè)文件用于讀寫
- wb+:以二進(jìn)制格式打開一個(gè)文件用于讀寫,如果文件存在則覆蓋,如果不存在則創(chuàng)建新文件
- a:打開一個(gè)文件用于追加內(nèi)容,如果文件已存在,文件指針會(huì)放在文件的結(jié)尾,如果不存在則創(chuàng)建新文件進(jìn)行寫入
- ab:以二進(jìn)制格式打開一個(gè)文件用于追加寫入
- a+:打開一個(gè)文件用于讀寫,如果該文件已存在,文件指針會(huì)放在結(jié)尾,文件打開時(shí)會(huì)是追加模式,該文件不存在則創(chuàng)建新文件
- ab+:以二進(jìn)制格式打開一個(gè)文件用于追加。
>>> file = open('test1.py','w') ?#以寫模式打開文件 >>> file.write('hello python') 12 >>> file.flush() ?#刷新文件內(nèi)容 >>> file.read() ? #文件不可讀 Traceback (most recent call last): ? File "<stdin>", line 1, in <module> io.UnsupportedOperation: not readable >>> file = open('test1.py','r') ?#以只讀打開文件 >>> file.readline() ?#讀取一行文件內(nèi)容 'hello python\n' >>> file.readline() 'hello python\n' >>> file.readline() '' >>> file.close() ? #關(guān)閉文件
2、文件對(duì)象的方法
f.read():讀取一個(gè)文件的內(nèi)容
>>> f = open('/etc/passwd','r')>>> f.read(5) #指定字節(jié)數(shù)讀取 'root:'>>> f.read() #讀取文件全部?jī)?nèi)容 "root:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:12:mail:/var/spool/mail:/sbin/nologin\nuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin\noperator:x:11:0:operator:/root:/sbin/nologin\ngames:x:12:100:games:/usr/games:/sbin/nologin\ngopher:x:13:30:gopher:/var/gopher:/sbin/nologin\nftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\nnobody:x:99:99:Nobody:/:/sbin/nologin\ndbus:x:81:81:System message bus:/:/sbin/nologin\nvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin\nabrt:x:173:173::/etc/abrt:/sbin/nologin\nhaldaemon:x:68:68:HAL daemon:/:/sbin/nologin\nntp:x:38:38::/etc/ntp:/sbin/nologin\nsaslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin\npostfix:x:89:89::/var/spool/postfix:/sbin/nologin\nsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\ntcpdump:x:72:72::/:/sbin/nologin\nvmail:x:5000:5000::/home/vmail:/sbin/nologin\napache:x:48:48:Apache:/var/www:/sbin/nologin\nmysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash\nilanni:x:5001:5001::/home/ilanni:/bin/bash\ndovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin\ndovenull:x:498:499:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin\n" >>> f.close()
f.readline():會(huì)從文件中讀取單獨(dú)的一行,換行符為“\n”,如果返回一個(gè)空字符串說明已經(jīng)讀到最后一行
>>> f = open('/etc/passwd','r') >>> f.readline() #讀取一行的內(nèi)容 'root:x:0:0:root:/root:/bin/bash\n' >>> f.readline() 'bin:x:1:1:bin:/bin:/sbin/nologin\n' >>> f.readline() 'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n' >>> f.close()
f.readlines():將會(huì)以列表的形式返回該文件中包含的所有行
>>> f = open('/etc/passwd','r') >>> f.readlines() #讀取所有行 ['root:x:0:0:root:/root:/bin/bash\n', 'bin:x:1:1:bin:/bin:/sbin/nologin\n', 'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n', 'adm: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', 'uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin\n', 'operator:x:11:0:operator:/root:/sbin/nologin\n', 'games:x:12:100:games:/usr/games:/sbin/nologin\n', 'gopher:x:13:30:gopher:/var/gopher:/sbin/nologin\n', 'ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\n', 'nobody:x:99:99:Nobody:/:/sbin/nologin\n', 'dbus:x:81:81:System message bus:/:/sbin/nologin\n', 'vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin\n', 'abrt:x:173:173::/etc/abrt:/sbin/nologin\n', 'haldaemon:x:68:68:HAL daemon:/:/sbin/nologin\n', 'ntp:x:38:38::/etc/ntp:/sbin/nologin\n', 'saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin\n', 'postfix:x:89:89::/var/spool/postfix:/sbin/nologin\n', 'sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\n', 'tcpdump:x:72:72::/:/sbin/nologin\n', 'vmail:x:5000:5000::/home/vmail:/sbin/nologin\n', 'apache:x:48:48:Apache:/var/www:/sbin/nologin\n', 'mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash\n', 'ilanni:x:5001:5001::/home/ilanni:/bin/bash\n', 'dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin\n', "dovenull:x:498:499:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin\n"] >>> f.seek(0) #跳指針到開頭 0 >>> f.readlines(9) #指定參數(shù)讀取行 ['root:x:0:0:root:/root:/bin/bash\n'] >>> f.readlines(9) ['bin:x:1:1:bin:/bin:/sbin/nologin\n'] >>> f.readlines(9) ['daemon:x:2:2:daemon:/sbin:/sbin/nologin\n'] >>> f.readlines(10) ['adm:x:3:4:adm:/var/adm:/sbin/nologin\n'] >>> f.readlines(1) ['lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\n'] >>> f.readlines() ['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', 'uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin\n', 'operator:x:11:0:operator:/root:/sbin/nologin\n', 'games:x:12:100:games:/usr/games:/sbin/nologin\n', 'gopher:x:13:30:gopher:/var/gopher:/sbin/nologin\n', 'ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\n', 'nobody:x:99:99:Nobody:/:/sbin/nologin\n', 'dbus:x:81:81:System message bus:/:/sbin/nologin\n', 'vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin\n', 'abrt:x:173:173::/etc/abrt:/sbin/nologin\n', 'haldaemon:x:68:68:HAL daemon:/:/sbin/nologin\n', 'ntp:x:38:38::/etc/ntp:/sbin/nologin\n', 'saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin\n', 'postfix:x:89:89::/var/spool/postfix:/sbin/nologin\n', 'sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\n', 'tcpdump:x:72:72::/:/sbin/nologin\n', 'vmail:x:5000:5000::/home/vmail:/sbin/nologin\n', 'apache:x:48:48:Apache:/var/www:/sbin/nologin\n', 'mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash\n', 'ilanni:x:5001:5001::/home/ilanni:/bin/bash\n', 'dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin\n', "dovenull:x:498:499:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin\n"] >>>
f.write():將內(nèi)容寫入到文件中,然后返回寫入的字符數(shù)
>>> f = open('test2.py','w') #python學(xué)習(xí)交流群:309488165 >>> f.write('hello python') #寫入內(nèi)容 12 >>> libex = 'hhhhhhhhhhhhhh' >>> f.write(libex) #按變量寫入內(nèi)容 14 >>> f.close() #關(guān)閉文件 >>> [root@python day7]# cat test2.py #內(nèi)容沒有換行符 hello pythonhhhhhhhhhhhhhh[root@python day7]#
f.tell():返回文件對(duì)象當(dāng)前所處的位置,它是從文件開頭開始算起的字節(jié)數(shù)
>>> f = open('test2.py','r') >>> f.tell() #指針當(dāng)前位置 0 >>> f.readline() #讀取一行文件后 'hello pythonhhhhhhhhhhhhhh' >>> f.tell() #指針移動(dòng)26字節(jié)數(shù)處 26 >>> f.close() #關(guān)閉文件
f.seek():改變當(dāng)前文件指針的位置,f.seek(offset,from_what)
from_what的值,如果是0表示開頭,如果是1表示當(dāng)前位置,2表示文件的結(jié)尾:
seek(x,0):從文件首行首字符開始移動(dòng)x個(gè)字符
seek(x,1):從當(dāng)前為往后移動(dòng)x個(gè)字符
seek(-x,2):從文件的結(jié)尾往前移動(dòng)x個(gè)字符
from_what值默認(rèn)為0,即文件開頭。
>>> f = open('test3.py','a+') >>> f.readlines() [] >>> f.seek(0) #開頭 0 >>> f.readlines() ['aaa\n', 'bbb\n', 'ccc\n', 'ddd\n', 'eee\n'] >>> f.tell() 20
f.clise():關(guān)閉文件并釋放系統(tǒng)的資源。
>>> f = open('test3.py','r') >>> f.readlines() ['aaa\n', 'bbb\n', 'ccc\n', 'ddd\n', 'eee\n'] >>> f.close() #關(guān)閉文件
到此這篇關(guān)于Python如何實(shí)用File文件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python File文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python臨時(shí)文件創(chuàng)建之tempfile模塊介紹
- Python讀取文件比open快十倍的庫(kù)fileinput
- Python實(shí)現(xiàn)csv文件(點(diǎn)表和線表)轉(zhuǎn)換為shapefile文件的方法
- Python實(shí)現(xiàn)批量壓縮文件/文件夾zipfile的使用
- python 使用fileinput讀取文件
- 如何用tempfile庫(kù)創(chuàng)建python進(jìn)程中的臨時(shí)文件
- Python fileinput模塊如何逐行讀取多個(gè)文件
- Python tempfile模塊生成臨時(shí)文件和臨時(shí)目錄
- Python中zipfile壓縮文件模塊的基本使用教程
相關(guān)文章
Python Unittest ddt數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)
本文主要介紹了Python Unittest ddt數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02線程和進(jìn)程的區(qū)別及Python代碼實(shí)例
這篇文章主要介紹了線程和進(jìn)程的區(qū)別及Python代碼實(shí)例,本文給出了一個(gè)python的腳本讓一個(gè)進(jìn)程中運(yùn)行兩個(gè)線程,需要的朋友可以參考下2015-02-02python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進(jìn))
這篇文章主要介紹了python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進(jìn)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04python使用QQ郵箱實(shí)現(xiàn)自動(dòng)發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了python使用QQ郵箱實(shí)現(xiàn)自動(dòng)發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06Python實(shí)現(xiàn)合并多個(gè)Excel文件中的指定sheet
這篇文章主要為大家介紹了一個(gè)用于合并多個(gè)Excel文件中指定sheet的Python代碼,這個(gè)功能可以方便地整理和分析數(shù)據(jù),文中的示例代碼簡(jiǎn)潔易懂,需要的可以參考下2023-10-10如何用python 操作MongoDB數(shù)據(jù)庫(kù)
這篇文章主要介紹了如何用python 操作MongoDB數(shù)據(jù)庫(kù),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04