1. 程式人生 > >day007 邁向大神之路---檔案

day007 邁向大神之路---檔案

檔案操作

小知識

  • 檔案路徑
    絕對路徑 從原始到目的
    相對路徑 當前執行的檔案路徑
  • 編碼方式
  • 操作方式 只讀 只寫 讀寫 寫讀…

以什麼編碼儲存 就以什麼開啟檔案讀取

1.讀取 只讀:r rb(不應編碼開啟 非文字類)

#讀取的操作
f=open('d:\1.txt',mode='r',encoding='utf-8')   #以絕對路徑開啟
f=open('1.txt',mode='r',encoding='utf-8')#以相對路徑開啟
content=f.read()  
print(content)
f.
close()

2.只寫: w wb 沒有此檔案 就會建立此檔案 (覆蓋)

#寫入檔案
  f=open('125',mode='w',encoding='utf-8')
  f.write("高崎")
  f.close()
#寫入二進位制檔案
   f=open('125',mode='wb')
   f.write("hello".encode('utf-8')) #以utf-8寫入
   f.close()

3. 追加 a ab

f=open('125',mode='a',encoding='uttf-8')
f.write("wangzhen")
f.close(
) f=open('125',mode='ab') f.write("wangzhen".encode('utf-8')) f.close()

4. 讀寫 r+b 先讀後寫


+號多種操作不會報錯

f=open(‘125’,mode=‘r+’,encoding=‘uttf-8’) #(# 常用r+)

f.read()
f.write()
f.close()
只能進行2步 指的是 f.read() 和f.write()才做

mode 從某種方式是開始讀的行數 +號多種操作不會報錯
f.write(‘aaaa’)
f.seek(0)

print(f.read()) #會不顯示 因為游標移到最後面了
f.close()

5. 寫讀 w+b

f=open(‘125’,mode=‘w+’,encoding=‘utf-8’)

其他方式(補充)

read 字元

  1. read(3) #只讀3個字元 對出來的都是字元
  2. f.seek() #按照位元組找的 1箇中文字元3個位元組 f.seek(count-3)
  3. f.tell() #游標在哪 斷點續傳 按照位元組找的 1箇中文字元3個位元組
  4. f.readable() 是否可讀
  5. f.readline() #按照行讀取
  6. f.readlines() #每一行當成列表中的一個元素
  7. f.truncate(1,2) #原始檔擷取
    讀取方式:
    for line in f: #一行一行讀
    print(line)
    f.close()
with open('125',mode='r+',encoding='uttf-8') as obj:
	print(obj.read())    #檔案自動關閉    @!!!有縮排

#可以同時開啟2個檔案  並進行操作(常用)
with open('125',mode='r+',encoding='uttf-8') as obj, open('125',mode='w+',encoding='uttf-8') as f1:
	print(obj.read())   #有縮排

ps 案列 註冊+賬號密碼與檔案匹配(輸入3次 失敗)

# username=input("請輸入你的名字")
# passwd=input("請輸入你的密碼")
# with open('info',mode='w+',encoding='utf-8') as f:
#     f.write('{}\n{}'.format(username,passwd))
# print("恭喜你註冊成功!")
lis=[]
i=0
while i < 3 :
    uname = input("請輸入你的名字")
    pwd = input("請輸入你的密碼")
    with open('info', mode='r+', encoding='utf-8') as f1:
        for line in f1:
            lis.append(line)
    if uname==lis[0].strip() and pwd==lis[1].strip():
        print("登入成功")
        break
    else:
        print("請輸入正確的密碼")
    i+=1

編碼之間相互轉換

str —>byte encode 編碼
s = ‘二哥’
b = s.encode(‘utf-8’)
print(b)

#byte —>str decode 解碼
s1 = b.decode(‘utf-8’)
print(s1)

#byte —>str encode 編碼
s = ‘abf’
b = s.encode(‘utf-8’)
print(b)

#byte —>str decode 解碼
s1 = b.decode(‘gbk’)
print(s1)