1.文件的路徑
創(chuàng)新互聯(lián)是一家以網(wǎng)站設(shè)計建設(shè),小程序定制開發(fā)、網(wǎng)站開發(fā)設(shè)計,網(wǎng)絡(luò)軟件產(chǎn)品開發(fā),企業(yè)互聯(lián)網(wǎng)推廣服務(wù)為主的民營科技公司。主要業(yè)務(wù)涵蓋:為客戶提供網(wǎng)站策劃、網(wǎng)站設(shè)計、網(wǎng)站開發(fā)、域名申請、網(wǎng)站優(yōu)化排名、友情鏈接等服務(wù)領(lǐng)域。憑借建站老客戶口碑做市場,建設(shè)網(wǎng)站時,根據(jù)市場搜索規(guī)律和搜索引擎的排名收錄規(guī)律編程,全力為建站客戶設(shè)計制作排名好的網(wǎng)站,深受老客戶認(rèn)可和贊譽(yù)。(1) 相對路徑:文件所在路徑
(2) 絕對路徑:從根路徑起的目錄
2.文件的類型
(1)文本文件 : 可以直接編寫的文件
(2)二進(jìn)制文件: 安裝包 ,圖片
3.mode相關(guān)
(1)關(guān)于文件操作的mode
mode 打開文件的方式
r 讀
w 寫
x 創(chuàng)建并寫
a 追加
r+ 讀寫
w+ 寫讀
x+ 創(chuàng)建并寫讀
a+ 追加讀
(2)關(guān)于文件的mode
mode 文本類型
t 文本(默認(rèn))
b 二進(jìn)制
4.文件打開、讀取、關(guān)閉的過程
文件打開
open('path', 'mode')
>>> handler = open('tpl.xml', 'rt')
文件讀取
>>> handler.read() '\n \n'{HOST} \n{PORT} \n{USER} \n
文件關(guān)閉
>>> handler.close()
5.讀文件
handler.read() 讀取所有的內(nèi)容
handler.read(size) 讀取文件size個字節(jié)內(nèi)容
handler.readline() 讀取文件一行
handler.readlines() 讀取文件所有行
判斷文件是否讀完的依據(jù)是判斷最后一行是否為空
文件的可遍歷性
>>> handler = open('tpl.xml', 'rt') >>> for lines in handler: ... print(lines) ...>>> handler.close() {HOST} {PORT} {USER}
對于二進(jìn)制文件的讀方式 只有 read 和 read(size)
read方式讀取
>>> handler = open('1.py','rb') >>> handler.read() b'#!/usr/bin/python\n\na = 1\nb = 2\nc = [1,2]\n\ndef test():\n a = 4 \n b = 5\n c = []\n c.append(1)\n print(a,b,c)\n\ntest()\nprint(a,b,c)\n' >>> handler.close()
read(size)
>>> handler = open('1.py','rb') >>> SIZE = 10 >>> while True: ... b_read = handler.read(SIZE) ... if b_read == b'': ... break ... print(b_read) ... b'#!/usr/bin' b'/python\n\na' b' = 1\nb = 2' b'\nc = [1,2]' b'\n\ndef test' b'():\n a ' b'= 4 \n b' b' = 5\n c' b' = []\n ' b'c.append(1' b')\n prin' b't(a,b,c)\n\n' b'test()\npri' b'nt(a,b,c)\n'
6.字符串和二進(jìn)制字符串的轉(zhuǎn)換
字符串轉(zhuǎn)換成二進(jìn)制字符串
>>> "abc".encode() b'abc'
二進(jìn)制字符串轉(zhuǎn)換成字符串
>>> b'abc'.decode() 'abc'
7.寫文件
寫文件 (文件不存在的時候創(chuàng)建)
>>> handler = open('2.txt', 'wt') >>> handler.write('123') 3 >>> handler.close()
當(dāng)文件存在的時候就會清空原來的文件,覆蓋之前的文件
>>> handler = open('2.txt', 'wt') >>> handler.write('111') 3 >>> handler.flush() >>> handler.close()
8.小練習(xí)
把一個字典列表中的value 拿出來寫入到一個文件里
#!/usr/bin/python students = [ {'id' : 1, 'name' : 'likuan', 'sex' : 'm', 'age' : 25}, {'id' : 2, 'name' : 'lizhi', 'sex' : 'm', 'age' : 22}, ] path = 'student.txt' handler = open(path, 'wt') for student in students: print(student) print('{0},{1},{2},{3}'.format(student['id'],student['name'],student['sex'],student['age'])) handler.write('{0},{1},{2},{3}'.format(student['id'],student['name'],student['sex'],student['age'])) handler.write('\n') handler.close()
從寫入的文件在在轉(zhuǎn)換成一個字典列表
#!/usr/bin/python path = 'student.txt' students = [] handler = open(path, 'rt') for line in handler: line = line.strip() id, name, sex, age = line.split(',') students.append({'id':id,'name': name,'sex': sex,'age': age}) handler.close() print(students)
9.一些區(qū)別
x 和 w 的區(qū)別 w在文件存在會清空 文件的內(nèi)容 x 不會清空文件的內(nèi)容
>>> handler = open('2.txt', 'xt') Traceback (most recent call last): File "", line 1, in FileExistsError: [Errno 17] File exists: '2.txt'
a 是相當(dāng)于追加
>>> handler = open('2.txt', 'at') >>> handler.write('test') 4 >>> handler.close()
文件指針 tell()查看文件指針的位置,seek() 重置文件指針的位置
>>> handler = open('2.txt', 'rt') >>> handler.read() '111test' >>> handler.tell() 7 >>> handler.read() '' >>> handler.seek(0,0) 0 >>> handler.read() '111test'
小總結(jié) 關(guān)于文件mode
r+ 文件必須存在
w+ 文件如果存在清空
x+ 文件必須不存在
a+ 只往文件的末尾寫
10.小練習(xí)2定義一個模板文件
例如模板文件中的配置
通過format傳值
#!/usr/bin/python tpl_file = 'tpl.xml' conf_file = 'mysql.xml' tpl = open(tpl_file).read() open(conf_file, 'wt').write(tpl.format(HOST='127.0.0.1',PORT='80',USER='kk'))
結(jié)果如下:
[root@Devop-python 19-1-20]# cat mysql.xml127.0.0.1 80 kk
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。