Python文件操作基礎(chǔ)流程解析
一.文件操作的流程
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的值是一種變量,占用的是應(yīng)用程序的內(nèi)存空間
2、操作文件:
讀/寫文件,應(yīng)用程序?qū)ξ募淖x寫請求都是在向操作系統(tǒng)發(fā)送系統(tǒng)調(diào)用,然后由操作系統(tǒng)控制硬盤把輸入讀入內(nèi)存、或者寫入硬盤
res=f.read()
3、關(guān)閉文件
f.close() # 回收操作系統(tǒng)資源
f.read() # 變量f存在,但是不能再讀了
二.資源管理與with上下文管理
打開一個(gè)文件包含兩個(gè)部分資源:應(yīng)用程序的變量f和操作系統(tǒng)打開的文件。
在操作完一個(gè)文件后必須把這兩部分的資源回收
通?;厥沼袃煞N方法:
1 f.close()#回收操作系統(tǒng)打開的文件資源
2 del f # 回收應(yīng)用程序資源
其中,del f 一定要發(fā)生在f.close()之后,否則就會導(dǎo)致操作系統(tǒng)打開的文件無法關(guān)閉,。
python的垃圾回收機(jī)制讓我們無序考慮del f,所以我們必須記住,操作完畢后一定要fclose(),
但是我們都是比較懶或者比較健忘的,所以python就有with關(guān)鍵字來幫助我們管理上下文。
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(默認(rèn)):只讀
- w:只寫
- a:只追加寫
文件的讀寫內(nèi)容的模式有
t 文本模式:1.讀寫文件都是以字符串為單位
2.只能針對文本文件
3.必須制定encoding參數(shù)
b 二進(jìn)制模式:1.讀寫文件都是以bytes為單位的
2.可以針對所有文件
3.一定不能制定encoding參數(shù)
強(qiáng)調(diào):t和b不能單獨(dú)使用,必須跟r/w/a連用
各模式的參考案例
1、r(默認(rèn)的操作模式):
只讀模式,當(dāng)文件不存在時(shí)報(bào)錯(cuò),當(dāng)文件存在時(shí)文件指針跳到開始位置
with open('c.txt',mode='rt',encoding='utf-8') as f:
print('第一次讀'.center(50,'*'))
res=f.read() # 把所有內(nèi)容從硬盤讀入內(nèi)存
print(res)
with open('c.txt', mode='rt', encoding='utf-8') as f:
print('第二次讀'.center(50,'*'))
res1=f.read()
print(res1)
實(shí)現(xiàn)用戶認(rèn)證功能
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('賬號或密碼錯(cuò)誤')
應(yīng)用程序====》文件
應(yīng)用程序====》數(shù)據(jù)庫管理軟件=====》文件
2、w:只寫模式,當(dāng)文件不存在時(shí)會創(chuàng)建空文件,當(dāng)文件存在會清空文件,指針位于開始位置
with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.read() # 報(bào)錯(cuò),不可讀
# f.write('擦勒\n')
# 強(qiáng)調(diào)1:
# 在以w模式打開文件沒有關(guān)閉的情況下,連續(xù)寫入,新的內(nèi)容總是跟在舊的之后
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('擦勒1\n')
# f.write('擦勒2\n')
# f.write('擦勒3\n')
# 強(qiáng)調(diào)2:
# 如果重新以w模式打開文件,則會清空文件內(nèi)容
# 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模式用來創(chuàng)建全新的文件
文件文件的copy工具
就是讀一個(gè)文件,再寫一個(gè)文件,把讀的復(fù)制給寫的。
# src_file=input('源文件路徑>>: ').strip()
# dst_file=input('目標(biāo)文件路徑>>: ').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:只追加寫,在文件不存在時(shí)會創(chuàng)建空文檔,在文件存在時(shí)文件指針會直接調(diào)到末尾
with open('e.txt',mode='at',encoding='utf-8') as f:
# f.read() # 報(bào)錯(cuò),不能讀
f.write('1\n')
f.write('2\n')
f.write('3\n')
強(qiáng)調(diào) w 模式與 a 模式的異同:
1 相同點(diǎn):在打開的文件不關(guān)閉的情況下,連續(xù)的寫入,新寫的內(nèi)容總會跟在前寫的內(nèi)容之后
2 不同點(diǎn):以 a 模式重新打開文件,不會清空原文件內(nèi)容,會將文件指針直接移動到文件末尾,新寫的內(nèi)容永遠(yuǎn)寫在最后
案例:a模式用來在原有的文件內(nèi)存的基礎(chǔ)之上寫入新的內(nèi)容,比如記錄日志、注冊
注冊功能
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))
了解:+不能單獨(dú)使用,必須配合r、w、a
r+,w+,a+:可讀可寫
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
用于統(tǒng)計(jì)項(xiàng)目中代碼總行數(shù)的Python腳本分享
這篇文章主要介紹了用于統(tǒng)計(jì)項(xiàng)目中代碼總行數(shù)的Python腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04
python實(shí)現(xiàn)自冪數(shù)的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)自冪數(shù)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
python實(shí)現(xiàn)將excel文件轉(zhuǎn)化成CSV格式
python PIL中ImageFilter模塊圖片濾波處理和使用方法
Python 微信之獲取好友昵稱并制作wordcloud的實(shí)例
Python設(shè)計(jì)模式之職責(zé)鏈模式原理與用法實(shí)例分析

