python获取文件字节数_python关于文件操作中的字符个数和字节数
記得剛開始學習python文件操作寫文件的時候有個問題,很奇怪。最后知道了就是字節數的原因。
我們先來看個例子。
新建個文件存為utf-8命名為0117utf-8.txt記得去掉BOM頭。
我們用r+模式嘗試去修改
>>> fp=open("d:\\pydelete\\0117utf-8.txt","r+")
>>> fp.write("aa")
2
>>> fp.close()
>>>
結果如下
亂碼一大坨。
這里就涉及了字節數了。
因為utf-8存中文是用3個字節存一個,存英文是用1個字節存一個英文字符。
如果寫入“aaa”就可以了。
所以切入正題,看看字節數和字符個數。
1.fp.read(arg),fp.write()后返回的數字是字符個數。
我們用剛才寫過的文件讀一下看看。
>>> fp=open("d:\\pydelete\\0117utf-8.txt","r+",encoding="utf-8")
>>> fp.read(1)
'a'
>>> fp.read(1)
'a'
>>> fp.read(1)
'a'
>>> fp.read(1) #可以看到這里的數字應該是字符個數,意思一個字符。
'國'
>>> fp.read(1)
'話'
>>> fp.read(1)
''
>>>
我們再來寫入一些內容。
>>> fp.seek(0.0) #將游標切回行首
0.0
>>> fp.write("新寫入2x")
5 #可以看到這里也是字符個數。表示寫入5個字符。
>>>fp.flush()
我們算一個結果之前文件內容是“aaa國話”我們寫入“新寫入2x” 之前的文件字節數是9,現在寫入11 r+模式會從頭開始覆蓋所以現在文件內容為“新寫入2x”
如果寫入的字節數小于之前的有可能出現亂碼(如果原文件有中文存在)
2.fp.tell(),fp.seek(0,0) 是字節數
我們加游標切回行首,再來讀下。
>>> fp.seek(0,0)
0
>>> fp.read(1)
'新'
>>> fp.tell()
3 #可以看出tell是返回的字節數,也就是游標現在應該在新字后邊。
>>>
由此我們試著改變游標位置。
>>> fp.seek(0,0)
0
>>> fp.seek(6,0) #seek的第一個參數也是字節數,那現在游標在哪我如果讀一個字符應該是什么? 游標應該在寫字后如果讀一個字符應該是“入”
6
----------
>>> fp.read(1)
'入'
3.fp.truncate(size)
把文件裁成規定的大小,默認是裁到當前文件操作標記的位置。如果size 比文件的大小還要,依據系統的不同可能是不改變文件,
也能是用0把文件補到相應的大小,也可能是以一些隨機的內容加上去。參數也是字節數。
我們來嘗試一下
>>> fp.seek(0,0)
0
>>> fp.truncate(6)
6
>>>
此時文件內容應該只剩下“新寫”2字。
知道這些我們在寫文件的時候,就能很清楚效果了。
關于字節數可以參考:
總結
以上是生活随笔為你收集整理的python获取文件字节数_python关于文件操作中的字符个数和字节数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MINISFORUM NAB6 迷你主机
- 下一篇: 王力集团上市了吗