練習19(檔案操作)
阿新 • • 發佈:2020-12-15
練習19
# f = open('d:\聯絡方式.txt',encoding='utf-8',mode='r')
# content = f.read()
# print(content)
# f.close()
'''
f, 變數f_obj,f_handler,f_h,fh,檔案控制代碼。
open() python的內建函式(內部呼叫的是windows的系統命令),
1,開啟檔案,產生檔案控制代碼。
2,對檔案控制代碼進行操作。
3,關閉檔案控制代碼。
'''
# 讀
# r 對於r模式 mode可以預設不寫
# f = open('d:\護士主婦空姐私密聯絡方式.txt',encoding='GB2312',mode='r')
# content = f.read()
# print(content)
# f.close()
# 1,全部讀取
# f = open('檔案操作1',encoding='utf-8',mode='r')
# content = f.read() #
# print(content)
# f.close()
# 2,read(n)
# f = open('檔案操作1',encoding='utf-8',mode='r')
# content = f.read(10) # r 模式,按照字元讀取。
# print(content)
# f.close()
# 3, 按行讀取
# f = open('檔案操作1',encoding='utf-8',mode='r')
# print(f.readline()) #
# print(f.readline()) #
# print(f.readline()) #
# print(f.readline()) #
# print(f.readline()) #
# print(f.readline()) #
# f.close()
# 4,按行讀取,返回一個list
# f = open('檔案操作1',encoding='utf-8',mode='r')
# content = f.readlines()
# print(content)
# f.close()
# rb
# 5,for 迴圈。
# f = open('檔案操作1',encoding='utf-8',mode='r')
# for line in f:
# print(line.strip())
# f.close()
# rb 檔案操作中凡是 帶b字母,都是與非文字類檔案相關的。
# f = open('美女1.jpg',mode='rb')
# content = f.read()
# print(content)
# f.close()
# f = open('檔案操作1',mode='rb')
# content = f.read(9) # rb 模式 n 按照位元組讀取。
# print(content)
# f.close()
# r+ 讀寫:先讀後追加。
# f = open('檔案操作1',encoding='utf-8',mode='r+')
# content = f.read()
# print(content)
# f.write('666')
# f.close()
# f = open('檔案操作1',encoding='utf-8',mode='r+')
# content = f.read(3)
# print(content)
# f.write('666')
# f.close()
# 不讀直接寫會怎樣:直接從開始覆蓋
# f = open('檔案操作1',encoding='utf-8',mode='r+')
# f.write('深圳你好')
# f.close()
# r+b
# 寫
# w
# 沒有檔案,建立檔案也要寫。
# 有檔案,先清空,後寫入。
# f = open('檔案操作2', encoding='utf-8',mode='w')
# f.write('深圳市南山區,福田區,羅湖區。。。')
# f.close()
# wb
# f = open('美女1.jpg',mode='rb')
# content = f.read()
# print(content)
#
# f1 = open(' 美女2.jpg',mode='wb')
# f1.write(content)
# f.close()
# f1.close()
# w+: 寫讀
# f = open('檔案操作2', encoding='utf-8',mode='w+')
# f.write('深圳市南山區,福田區,羅湖區。。。')
# f.seek(3) # 調整游標
# content = f.read()
# print(content)
# f.close()
# 追加
# a
# 沒有檔案,建立檔案也要寫。
# 有檔案,直接在檔案的最後面追加。
# f = open('檔案操作3', encoding='utf-8',mode='a')
# f.write('\n南方水土好。。。')
# f.close()
# ab a+ a+b
# 其他方法:readale ,writable,seek
# f = open('檔案操作1',encoding='utf-8')
# if f.writable():
# content = f.read()
# print(content)
# f.close()
# seek 調整游標到開始,seek(0) 調整游標到結尾seek(0,2) *****
# f = open('檔案操作1',encoding='utf-8')
# f.seek(6) # 按照位元組去移動游標
# content = f.read()
# print(content)
# f.close()
# f = open('檔案操作1',mode='rb')
# print(f.read())
# f.seek(6) # 按照位元組去移動游標
# content = f.read()
# print(content)
# f.close()
# tell 告知游標的位置 *****
# f = open('檔案操作1',encoding='utf-8')
# f.seek(0,2) # 按照位元組去移動游標
# print(f.tell())
# f.close()
# truncate 要在writable模式下進行擷取。
# r+ a+ ..不能在w模式下使用,對原檔案進行擷取
# f = open('檔案操作1',encoding='utf-8',mode='r+')
# print(f.truncate(6))
# f.close()
# 1,主動關閉檔案控制代碼
# with open('檔案操作2',encoding='utf-8') as f1:
# print(f1.read())
# 2,開啟多個檔案控制代碼。
# with open('檔案操作2',encoding='utf-8') as f1,\
# open('檔案操作3',encoding='utf-8',mode='w') as f2:
# print(f1.read())
# f2.write('666666')
# 檔案的改的操作
# 1,以讀的模式開啟原檔案,產生一個檔案控制代碼f1.
# 2,以寫的模式建立一個新檔案,產生一個檔案控制代碼f2.
# 3,讀取原檔案內容,進行修改,並將修改後的寫入新檔案。
# 4,將原檔案刪除。
# 5,將新檔案重新命名成原檔案。
# low版
import os
with open('alex的深度剖析', encoding='utf-8') as f1,\
open('alex的深度解析.bak',encoding='utf-8',mode='w') as f2:
old_content = f1.read()
new_content = old_content.replace('alex','SB')
f2.write(new_content)
os.remove('alex的深度剖析')
os.rename('alex的深度解析.bak', 'alex的深度剖析')
#
import os
with open('alex的深度剖析', encoding='utf-8') as f1,\
open('alex的深度解析.bak',encoding='utf-8',mode='w') as f2:
for line in f1:
new_line = line.replace('SB','alex')
f2.write(new_line)
os.remove('alex的深度剖析')
os.rename('alex的深度解析.bak', 'alex的深度剖析')