day08

一、文件操做

  1.一、對文件的讀

 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.二、對文件的寫

 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.三、追加

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.四、讀寫操做

 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()

  1.五、寫讀操做

# 正常的先寫再讀,雖然能寫入內容,可是卻讀不出來,可是隻要在寫以後加一個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()

  1.六、追加以後再讀取

# 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.七、一些功能講解

    1.7.一、截取源文件的字符

 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()

    1.7.二、對seek功能的講解

# 若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)則正好定位到第二個字,若小於三,就定位不到第一個,就會報錯

    1.7.三、tell()、readable()、readline()、readlines()、truncate()

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.7.四、對文件進行for循環

1 對文件進行for循環
2 f = open('demo',mode='r+',encoding='utf-8')
3 for ln in f:
4     print(ln)

    1.7.五、with open()

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.7.六、登陸註冊功能的應用

 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

  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('現文件','原文件')
相關文章
相關標籤/搜索