8.1 文件:因?yàn)槎悖杂篮?br>CPU-內(nèi)存
CPU-硬盤
==========================================================
8.1.1打開文件 open()函數(shù)打開并且返回文件對象
open()有很多參數(shù),作為初學(xué)者,先關(guān)注第一和第二個參數(shù)即可。
open(帶路徑的文件名,指定文件打開模式)
----------------------------------------------
"r"只讀模式(默認(rèn))
"w"寫入模式 覆蓋已經(jīng)存在的文件
"x"如果文件存在,此模式打開引發(fā)異常
"a"以寫入模式打開,文件若存在,末尾追加寫入
"b"以二進(jìn)制打開文件
"t"以文本模式打開(默認(rèn))
" "可讀寫模式
"U"通用換行符支持
----------------------------------------------
f=open("命令.txt")
沒有消息就是好消息,文件成功被打開了。
============================================================
8.1.2 文件對象的方法
close()關(guān)閉文件
read(size=-1)從文件讀取size個字符,未給定或者為負(fù)值時(shí)候,讀取剩余所有字符,
作為字符串返回
readline()從文件中讀取一整行字符串
write(str)將字符串str寫入文件
writelines(seq)向文件寫入字符串序列,seq應(yīng)該是一個返回字符串的可迭代對象
seek(offset,from)在文件中移動指針,從from(0-起始 1-當(dāng)前 2-末尾)偏移offset個字節(jié)
tell()返回當(dāng)前在文件中的位置
==============================================================
8.1.3文件的關(guān)閉
close()用于關(guān)閉文件。忘記關(guān)閉Python最后會自動關(guān)閉文件。但是防止斷電丟失數(shù)據(jù),養(yǎng)成
使用完成后及時(shí)關(guān)閉文件的習(xí)慣。
8.1.4文件的讀取和定位
文件的讀取方法有很多:用文件對象的read()和readline()方法。也可以直接list(f)或者迭代
來讀取。
read()是按照字節(jié)為單位讀取,如果不設(shè)置參數(shù),會全部讀取,指針指向文件末尾。
tell()方法可以告訴你當(dāng)前文件指針的位置。
代碼如下
f=open("命令.txt",encoding="UTF-8")
print(f.read())
print(f.tell())
print(f.seek(0,0))
print(f.read(4))
print(f.tell())
----------------------------
6. setdefault()方法和get()方法相似,區(qū)別是get()找不到返回空或指定值
而setdefault()方法在找不到的時(shí)候,進(jìn)行設(shè)置添加值。
a={1:"one",2:"two",3:"three",4:"four"}
print(a.setdefault(3))
print(a.setdefault(5))
247
0
6. s
4
===========================
f=open("命令.txt",encoding="UTF-8")
print(f.readline())
------------------------readline()讀取一行,直到遇到\n為止
6. setdefault()方法和get()方法相似,區(qū)別是get()找不到返回空或指定值
========================================
列表也很強(qiáng)大,什么都可以往里面放!
print(list(f))
------------------
['6. setdefault()方法和get()方法相似,區(qū)別是get()找不到返回空或指定值\n', '而setdef...]
========================================================
用了列表去裝載后,可以發(fā)現(xiàn),元素個數(shù)由行數(shù)決定了,列表元素個數(shù)=行數(shù)。
f=open("命令.txt",encoding="UTF-8")
f.seek(0,0)
lines=list(f)
for each in lines:
print(each)
------------------上述沒有錯,只是有點(diǎn)酒精燈燒開水----效率低。因f本身支持迭代!
f=open("命令.txt",encoding="UTF-8")
f.seek(0,0)
for each in f:
print(each)
----------------------
6. setdefault()方法和get()方法相似,區(qū)別是get()找不到返回空或指定值
而setdefault()方法在找不到的時(shí)候,進(jìn)行設(shè)置添加值。
a={1:"one",2:"two",3:"three",4:"four"}
print(a.setdefault(3))
print(a.setdefault(5))
=====================================================================
8.1.5 文件的寫入
如果要寫入文件,請確保打開之前模式有"w"或"a",否則出錯
f=open(r"C:\Users\Daodantou\Desktop\record.txt",encoding="UTF-8")
f.write("中華人民共和國萬歲")
------------- 寫入失敗 -----------------
Traceback (most recent call last):
File "C:/Users/Daodantou/PycharmProjects/s14/day7/t2.py", line 2, in <module>
f.write("中華人民共和國萬歲")
io.UnsupportedOperation: not writable
=================================================改寫代碼
f=open(r"C:\Users\Daodantou\Desktop\record.txt","a",encoding="UTF-8")
f.write("中華人民共和國萬歲")
f.close()
--------------------------------------------------------
======我就是個跟屁蟲。=======中華人民共和國萬歲
==========================================================================
f=open(r"C:\Users\Daodantou\Desktop\record.txt","w",encoding="UTF-8")
f.write("中華人民共和國萬歲")
f.close()
---------------------------
中華人民共和國萬歲