溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python文件操作基礎流程解析

發布時間:2020-10-04 12:40:02 來源:腳本之家 閱讀:154 作者:西樓xilou 欄目:開發技術

一.文件操作的流程

1、打開文件

open('C:\a.txt\nb\c\d.txt')

解決方案一:推薦

open(r'C:\a.txt\nb\c\d.txt')

解決方案二:

open('C:/a.txt/nb/c/d.txt')

f=open(r'aaa/a.txt',mode='rt') # f的值是一種變量,占用的是應用程序的內存空間

2、操作文件:

讀/寫文件,應用程序對文件的讀寫請求都是在向操作系統發送系統調用,然后由操作系統控制硬盤把輸入讀入內存、或者寫入硬盤

res=f.read()

3、關閉文件

f.close() # 回收操作系統資源

f.read() # 變量f存在,但是不能再讀了

二.資源管理與with上下文管理

打開一個文件包含兩個部分資源:應用程序的變量f和操作系統打開的文件。

在操作完一個文件后必須把這兩部分的資源回收

通?;厥沼袃煞N方法:

1 f.close()#回收操作系統打開的文件資源

2 del f # 回收應用程序資源

其中,del f 一定要發生在f.close()之后,否則就會導致操作系統打開的文件無法關閉,。

python的垃圾回收機制讓我們無序考慮del f,所以我們必須記住,操作完畢后一定要fclose(),

但是我們都是比較懶或者比較健忘的,所以python就有with關鍵字來幫助我們管理上下文。

1. with open('a.txt',mode='rt') as f1:# f1=open('a.txt',mode='rt')

   pass

2. with open('a.txt',mode='rt') as f1,\

open('b.txt',mode='rt') as f2:

res1=f1.read()

res2=f2.read()

print(res1)

三.文件的操作模式

文件的讀寫操作的模式有

  • r(默認):只讀
  • w:只寫
  • a:只追加寫

文件的讀寫內容的模式有

t 文本模式:1.讀寫文件都是以字符串為單位

      2.只能針對文本文件

      3.必須制定encoding參數

b 二進制模式:1.讀寫文件都是以bytes為單位的

       2.可以針對所有文件

       3.一定不能制定encoding參數 

強調:t和b不能單獨使用,必須跟r/w/a連用

各模式的參考案例

1、r(默認的操作模式):

只讀模式,當文件不存在時報錯,當文件存在時文件指針跳到開始位置

 with open('c.txt',mode='rt',encoding='utf-8') as f:
   print('第一次讀'.center(50,'*'))
   res=f.read() # 把所有內容從硬盤讀入內存
   print(res)
 with open('c.txt', mode='rt', encoding='utf-8') as f:
   print('第二次讀'.center(50,'*'))
   res1=f.read()
   print(res1)

實現用戶認證功能

 inp_username=input('your name>>: ').strip()
 inp_password=input('your password>>: ').strip()
 with open('user.txt',mode='rt',encoding='utf-8') as f:
   for line in f:
     # print(line,end='') # egon:123\n
     username,password=line.strip().split(':') #壓縮賦值,取出文件中的用戶名密碼
     if inp_username == username and inp_password == password:
       print('login successfull')
       break
   else:
     print('賬號或密碼錯誤')

應用程序====》文件

應用程序====》數據庫管理軟件=====》文件

2、w:只寫模式,當文件不存在時會創建空文件,當文件存在會清空文件,指針位于開始位置

with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.read() # 報錯,不可讀
# f.write('擦勒\n') 
# 強調1:
# 在以w模式打開文件沒有關閉的情況下,連續寫入,新的內容總是跟在舊的之后
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('擦勒1\n')
# f.write('擦勒2\n')
# f.write('擦勒3\n')
# 強調2:
# 如果重新以w模式打開文件,則會清空文件內容
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('擦勒1\n')
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('擦勒2\n')
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('擦勒3\n')

案例:w模式用來創建全新的文件

文件文件的copy工具

就是讀一個文件,再寫一個文件,把讀的復制給寫的。

# src_file=input('源文件路徑>>: ').strip()
# dst_file=input('目標文件路徑>>: ').strip()
# with open(r'{}'.format(src_file),mode='rt',encoding='utf-8') as f1,\
#   open(r'{}'.format(dst_file),mode='wt',encoding='utf-8') as f2:
#   res=f1.read()
#   f2.write(res)

3、a:只追加寫,在文件不存在時會創建空文檔,在文件存在時文件指針會直接調到末尾

with open('e.txt',mode='at',encoding='utf-8') as f:
   # f.read() # 報錯,不能讀
   f.write('1\n')
   f.write('2\n')
   f.write('3\n')

強調 w 模式與 a 模式的異同:

1 相同點:在打開的文件不關閉的情況下,連續的寫入,新寫的內容總會跟在前寫的內容之后

2 不同點:以 a 模式重新打開文件,不會清空原文件內容,會將文件指針直接移動到文件末尾,新寫的內容永遠寫在最后

案例:a模式用來在原有的文件內存的基礎之上寫入新的內容,比如記錄日志、注冊

注冊功能

 name=input('your name>>: ')
 pwd=input('your name>>: ')
 with open('db.txt',mode='at',encoding='utf-8') as f:
   f.write('{}:{}\n'.format(name,pwd))

了解:+不能單獨使用,必須配合r、w、a

r+,w+,a+:可讀可寫

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女