python 文件操做

1、進制

對於計算機而言不管是文件存儲 / 網絡傳輸數據本質上都是:二進制(010101010101),如:電腦上存儲視頻/圖片/文件都是二進制; QQ/微信聊天發送的表情/文字/語言/視頻 也所有都是二進制。微信

進制:網絡

  • 2進制,計算機內部。
  • 8進制
  • 10進制,人來進行使用通常狀況下計算機能夠獲取10進制,而後再內部會自動轉換成二進制並操做。
  • 16進制,通常用於表示二進制(用更短的內容表示更多的數據),一版是:\x 開頭。
二進制 八進制 十進制 十六進制
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 a
1011 13 11 b
1100 14 12 c
1101 15 13 d
1110 16 14 e
1111 17 15 f
10000 20 16 10

2、文件操做(補充)

# 打開文件
f = open('要打開的文件路徑',mode='r/w/a',encoding='文件原來寫入時定義的編碼')

# 操做
data = f.read()  # 讀取文件的內容到內存(所有)
f.write('要寫入的內容')

# 關閉文件
f.close()
# 示例一 : 通常用於文字寫入。
f = open('a.txt',mode='w',encoding='utf-8')
# a. 將 「你好」 根據encoding指定的編碼轉換成: 
#       「你好」 --> 10001000 10001000 10001000 10001000 10001000 10001000
# b. 將二進制寫入到文件中。
f.write('你好') # w打開文件,則write傳入字符串
f.close()

# 示例二:通常用於圖片/音頻/視頻/未知編碼 
f = open('a.txt',mode='wb')
# f.write('你好')  # wb打開文件,則write傳入的是二進制,但‘你好’是字符串不是二進制,須要轉換後再寫入。
# 1. 把要寫入的字符串轉換成二進制
data = "我好睏"
content = data.encode('utf-8') # 將字符串按照utf-8編碼轉換成二進制
# 2. 再將二進制寫到文件中
f.write(content) # wb打開文件,則write傳入的是 二進制
f.close()

1.文件操做編碼

  • 模式
    • r / w / a 【只讀只寫字符串】 *****
    • r+ / w+ / a+ 【可讀可寫字符串】
    • rb / wb /ab 【只讀只寫二進制】 *****
      • 字符串轉換 「二進制」:
        v = "你好"
        data = v.encode('utf-8')
      • 二進制轉換成字符串
        v = b'\xe6\x88\x91\xe5\xa5\xbd\xe5\x9b\xb0'
        data = v.decode('utf-8')
    • r+b / w+b / a+b 【可讀可寫二進制】
  • seek(光標字節位置),不管模式是否帶b,都是按照字節進行處理。code

    obj = open('a.txt',mode='r',encoding='utf-8')
    obj.seek(3) # 跳轉到指定字節位置
    data = obj.read()
    obj.close()
    
    print(data)
    
    
    obj = open('a.txt',mode='rb')
    obj.seek(3) # 跳轉到指定字節位置
    data = obj.read()
    obj.close()
    
    print(data)
  • tell(), 獲取光標當前所在的字節位置視頻

    obj = open('a.txt',mode='rb')
    # obj.seek(3) # 跳轉到指定字節位置
    obj.read()
    data = obj.tell()
    print(data)
    obj.close()
  • flush,強制將內存中的數據寫入到硬盤圖片

    v = open('a.txt',mode='a',encoding='utf-8')
    while True:
        val = input('請輸入:')
        v.write(val)
        v.flush()
    
    v.close()

2.關閉文件操做內存

文藝青年utf-8

v = open('a.txt',mode='a',encoding='utf-8')

v.close()

二逼字符串

with open('a.txt',mode='a',encoding='utf-8') as v:
    data = v.read()
    # 縮進中的代碼執行完畢後,自動關閉文件

3.文件內容的修改input

with open('a.txt',mode='r',encoding='utf-8') as f1:
    data = f1.read()
new_data = data.replace('飛灑','666')

with open('a.txt',mode='w',encoding='utf-8') as f1:
    data = f1.write(new_data)

大文件修改

f1 = open('a.txt',mode='r',encoding='utf-8')
f2 = open('b.txt',mode='w',encoding='utf-8')

for line in f1:
    new_line = line.replace('阿斯','死啊')
    f2.write(new_line)
f1.close()
f2.close()
with open('a.txt',mode='r',encoding='utf-8') as f1, open('c.txt',mode='w',encoding='utf-8') as f2:
    for line in f1:
        new_line = line.replace('阿斯', '死啊')
        f2.write(new_line)
相關文章
相關標籤/搜索