1 # 事先在E盤下建立一個文本文檔並讀取 2 f = open('E:\新建文本文檔.txt',mode='r',encoding='ANSI') 3 content = f.read() 4 print(content) 5 f.close() 6 7 # 事先在項目下建立一個文本文檔,再去讀它 8 f = open('demo',mode='r',encoding='utf-8') 9 content = f.read() 10 print(content) 11 f.close() 12 13 # 以二進制打開,這種讀取方式主要用於非文字文件 14 f = open('demo',mode='rb') 15 content = f.read() 16 print(content) 17 f.close()
1 # 沒有此文件就會建立文件,已有此文件就會將源文件中的內容刪除,再寫。 2 # 注意寫的時候光標在內容的前面 3 f = open('demo1',mode='w',encoding='utf-8') 4 f.write('只寫,再添加') 5 f.close() 6 7 # wb 8 f = open('demo2',mode='wb') 9 f.write('只寫,再添加'.encode('utf-8')) 10 f.close()
1 # 追加:a 2 f = open('demo2',mode='a',encoding='utf-8') 3 f.write(',追加') 4 f.close() 5 6 # 二進制追加:ab 7 f = open('demo2',mode='ab') 8 f.write(',二進制追加'.encode('utf-8')) 9 f.close()
1 # 先讀,再寫:r+ 2 f = open('demo2',mode='r+',encoding='utf-8') 3 print(f.read()) 4 f.write(',先讀,再寫') 5 f.close() 6 7 # 在讀寫模式下,進行寫讀 8 # 若demo下的內容爲python,我先寫入aaa,再進行讀,會發現讀出來的內容是hon,而demo下的內容是aaahon 9 # 請記住,在讀寫模式下進行寫讀,寫入的內容會從前日後,替換原有的內容,讀出的內容是沒有被替換的內容 10 f = open('demo',mode='r+',encoding='utf-8') 11 f.write('aaa') 12 print(f.read()) 13 f.close() 14 15 # 以二進制進行讀寫 16 f = open('demo2',mode='r+b') 17 print(f.read()) 18 f.write(',以二進制類型讀寫'.encode('utf-8')) 19 f.close()
# 正常的先寫再讀,雖然能寫入內容,可是卻讀不出來,可是隻要在寫以後加一個f.seek(0),將光標移到最前面,就能夠讀出來了 f = open('demo2',mode='w+',encoding='utf-8') f.write('寫讀') f.seek(0) print(f.read()) f.close() # 以二進制進行寫讀 f = open('demo2',mode='w+b') f.write('以二進制寫讀'.encode('utf-8')) f.seek(0) print(f.read()) f.close()
# a是追加,追加以後對他進行讀會報錯 f = open('demo2',mode='a',encoding='utf-8') f.write('追加') print(f.read()) f.close() # 使用a+以後,對他進行追加,再將光標移動到0,再讀就能夠了 f = open('demo2',mode='a+',encoding='utf-8') f.write('追加') f.seek(0) print(f.read()) f.close()
1 f = open('demo2',mode='r+',encoding='utf-8') 2 content = f.read(3) # 讀出來的都是字符,讀取前三個 3 print(content) 4 f.close() 5 6 f = open('demo2',mode='r+',encoding='utf-8') 7 f.seek(2) # 定位到第三個,讀剩下的。 8 content = f.read() 9 print(content) 10 f.close()
# 若demo2中的內容是中文,如:你好啊 f = open('demo2',mode='r+',encoding='utf-8') f.seek(3) # result:好啊 f.seek(2) # 會報錯 content = f.read() print(content) f.close() # 解釋:seek定位是按照字節來定位的,一箇中文三個字節,若seek(3)則正好定位到第二個字,若小於三,就定位不到第一個,就會報錯
f = open('demo',mode='r+',encoding='utf-8') content = f.read() print(content) print(f.tell())# 獲得當前光標的位置 print(f.readable())# 判斷是否可讀 print(f.readline())# 一行一行的讀 print(f.readlines())# 每一行當成列表中的一個元素,添加到list中 f.truncate(2)# 從源文件中截取字符串,源文件會被改變 f.close()
1 對文件進行for循環 2 f = open('demo',mode='r+',encoding='utf-8') 3 for ln in f: 4 print(ln)
1 # 寫close可能有時候會忘記寫,使用with open就不須要close 2 with open('demo',mode='r+',encoding='utf-8') as f: 3 print(f.read()) 4 5 # 同時打開多個進行操做 6 with open('demo',mode='r+',encoding='utf-8') as f,\ 7 open('demo',mode='r',encoding='utf-8') as f1: 8 print(f.read()) 9 print(f1.read())
1 username = input('請輸入用戶名') 2 password = input('請輸入密碼') 3 with open('demo',mode='w',encoding='utf-8') as f: 4 f.write('{}\n{}'.format(username,password)) 5 print('恭喜您註冊成功!') 6 lis = [] 7 i = 0 8 while i < 3: 9 usn = input('請輸入用戶名') 10 pwd = input('請輸入密碼') 11 with open('demo',mode='r+',encoding='utf-8') as f1: 12 for ln in f1: 13 lis.append(ln) 14 if lis[0].strip() == usn and lis[1].strip() == pwd: 15 print('恭喜您,登陸成功') 16 break 17 else:print('帳號密碼錯誤') 18 i += 1
有一個文件,我想去修改他的內容,可是我想讓別人可以看出來修改後的文件和修改以前的文件,那麼我要怎麼作呢?python
1 # with open('原文件','w',encoding='utf-8') as f: 2 # f.write('原文件,未修改') 3 4 # 修改文件 5 with open('原文件',encoding='utf-8') as f,open('現文件','w',encoding='utf-8') as f1: # open語句中,未指定操做方式,則默認爲r,此外mode能夠不寫,直接寫操做方式。 6 for ln in f: 7 if '未修改' in ln: 8 ln = ln.replace('未修改','已修改') 9 f1.write(ln) 10 11 import os 12 # 刪除原文件 13 os.remove('原文件') 14 # 重命名文件 15 os.rename('現文件','原文件')