欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python文件處理筆記之文本文件

 更新時(shí)間:2021年08月12日 09:43:15   作者:wakeyo_J  
相信大家在測(cè)試任務(wù)過(guò)程中都或多或少遇到自己處理文本文件的情況,這篇文章主要給大家介紹了關(guān)于python文件處理筆記之文本文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

文本文件具備初步存放、編輯各類數(shù)據(jù)的能力,并可以持久保留和數(shù)據(jù)共享。

1. 建立文件

  建立文本文件有兩種途徑:一是通過(guò)Windows的“記事本”工具創(chuàng)建一個(gè)擴(kuò)展名為“.txt”的文件,然后供程序調(diào)用。二是通過(guò)程序自動(dòng)建立新文件。

1.1 文本文件代碼實(shí)現(xiàn)

newfile = "g:\\t1.txt"   #定義需要建立的文本名稱和路徑
b_new_file = open(newfile,"w")     #用open函數(shù)建立一個(gè)新的文本文件
b_new_file.close()     #關(guān)閉文件
print("%s成功建立!"%newfile)

效果:

1.2 代碼編寫(xiě)分析

文本文件的名稱

(1)文本名稱,命名要符合命名內(nèi)容,一般情況下以英文字母、數(shù)字、漢字開(kāi)頭的易于閱讀的字符串組合。不能使用星號(hào)(*)等特殊符號(hào)開(kāi)頭的命名。

(2)文本名稱是一個(gè)字符串,命名過(guò)程中需要考慮到轉(zhuǎn)義符號(hào)對(duì)路徑或名稱的影響。如:“g:\t1.txt”中的“\t”本身就是一個(gè)橫向制表符,如果用“g:\t1.txt”就會(huì)出錯(cuò)。另一種解決字符串轉(zhuǎn)義符的方法是在字符串前加原始字符串限制符號(hào)(原生字符r或R)可以原樣輸出r“g:\t1.txt”。

(3)指定路徑必須設(shè)置(在不同的解釋器中,對(duì)于路徑的設(shè)置有區(qū)別)

用open函數(shù)建立(打開(kāi))文件

open函數(shù)屬于系統(tǒng)內(nèi)置函數(shù),支持對(duì)字符串或二進(jìn)制文件的打開(kāi)操作,返回可操作的文件對(duì)象。

使用格式:

open(file,mode=“w”)

  file參數(shù)用于指定需要操作的文件名(可以同時(shí)只當(dāng)文件路徑);mode參數(shù)用于指定需要操作的方式。

  r、w、x、a為打開(kāi)文件的基本模式,對(duì)應(yīng)這只讀、只寫(xiě)、新建、追加四種打開(kāi)方式;b、t、+、U與基本模式組合使用,對(duì)應(yīng)二進(jìn)制、文本、讀寫(xiě)、通用換行符四種模式。

  mode默認(rèn)值為“rt”模式,意味著對(duì)文本文件進(jìn)行讀操作。目前,mode值常見(jiàn)可以組合的方式為“rb"、”wb“、”xb“、”ab“、”rt“、”wt“、”xt“、”at“、”r+“、”w+“、”x+“、”a+“。

用b_new_file.close()方法把新建立的文件關(guān)閉

  如果不關(guān)閉新建立的文本文件,則打開(kāi)的文件對(duì)象一直留存在內(nèi)存中,如果打開(kāi)的文件多了,容易出現(xiàn)內(nèi)存溢出等錯(cuò)誤。

2. 基本的讀寫(xiě)文件

  打開(kāi)文本文件后,可以對(duì)文件進(jìn)行基本的讀寫(xiě)操作。

2.1 用文件對(duì)象write(s)方法寫(xiě)內(nèi)容

  f.write(s),f代表可寫(xiě)方式打開(kāi)文件對(duì)象;s為將要寫(xiě)入文件的內(nèi)容,write()方法把s內(nèi)容寫(xiě)入文件f后,返回寫(xiě)入的字節(jié)數(shù)。

newfile = "g:\\t1.txt"   #定義需要建立的文本名稱和路徑
b_new_file = open(newfile,"w")     #用open函數(shù)建立一個(gè)新的文本文件
t_n = b_new_file.write("l like python!")   #用文件對(duì)象write()方法寫(xiě)字符串
b_new_file.close()     #關(guān)閉文件
print("往文件里寫(xiě)入%d字節(jié)內(nèi)容"%t_n)

效果:

  ”w“模式打開(kāi)的文本文件,在寫(xiě)入內(nèi)容時(shí),第二次寫(xiě)入的內(nèi)容會(huì)覆蓋第一次保存的內(nèi)容,若要解決此問(wèn)題,采用”a“模式打開(kāi)文件。

2.2 用文件對(duì)象read()方法讀取內(nèi)容

  f.read(size),f代表可讀方式打開(kāi)的文件對(duì)象;size為可選參數(shù),若指定讀取字節(jié)數(shù),則讀取指定大小字節(jié)的內(nèi)容,若沒(méi)有指定,則讀取盡可能大的內(nèi)容。

b_new_file = open(newfile,"r")      #以只讀方式打開(kāi)文件
tt = b_new_file.read()           #用文件對(duì)象read()方法讀取內(nèi)容
print(tt)
b_new_file.close()

效果:

2.3 連續(xù)用read()方法、write()方法操作文件

b_new_file = open(newfile,"r+")     #用open函數(shù)建立一個(gè)新的文本文件
tt = b_new_file.read()           #用文件對(duì)象read()方法讀取內(nèi)容
print(tt)
t_n = b_new_file.write("\n三酷貓!^_^")     #繼續(xù)往文件里寫(xiě)入新內(nèi)容
b_new_file.close()
print("往文件里寫(xiě)入%d字節(jié)內(nèi)容"%t_n)

效果:

注意:不鼓勵(lì)連續(xù)讀寫(xiě)操作方法,因?yàn)榇嬖谧x寫(xiě)數(shù)據(jù)不確定性問(wèn)題

3. 復(fù)雜的讀寫(xiě)文件

  在基礎(chǔ)的讀寫(xiě)存在上,可以考慮多行讀寫(xiě)的操作。

1、一次寫(xiě)入多行

nums = ["one","two","three","four","five","six","seven"]
t = open(r"g:\t2.txt","a")    #追加打開(kāi)文件
for get_one in nums:
    t.write(get_one+"\n")     #將每個(gè)元素循環(huán)寫(xiě)入文件,行末加\n
t.close()
print("連續(xù)寫(xiě)入完成")

效果:

2、一次讀一行

  f.readline(s),f代表以可讀模式打開(kāi)的文件;s為可選參數(shù),若設(shè)置指定大小的字節(jié),則返回相應(yīng)大小的字符串,若沒(méi)有設(shè)定,則以行單位返回字符串。

t1 = open(r"g:/t2.txt","r")
dd = 1
while dd:
    dd = t1.readline()    #一次讀一行
    print(dd.strip())      #strip()去除字符串兩端的空字符

效果:

3、以列表格式讀取多行

t1 = open(r"g:/t2.txt","r")
t_s = t1.readlines()            #以列表格式讀取多行
print(t_s)

效果:

4、連續(xù)讀特定字節(jié)數(shù)量的內(nèi)容

f = open(r"g:/t2.txt","r")
print(f.readline(2))         #讀取文件頭2個(gè)字節(jié)
print(f.readline())          #繼續(xù)讀取同一行,剩余字節(jié)
print(f.read(4))             #繼續(xù)讀取4個(gè)字節(jié)
print(f.read(4))

效果:

5、在指定位置讀內(nèi)容

5.1 f.tell(),f代表打開(kāi)的文件,tell()方法返回當(dāng)前文件可以寫(xiě)入讀寫(xiě)的位置(字節(jié)數(shù))

f = open(r"g:/t2.txt","r")
print(f.readline(2))         #讀取文件頭2個(gè)字節(jié)
print(f.readline())          #繼續(xù)讀取同一行,剩余字節(jié)
print(f.read(4))             #繼續(xù)讀取4個(gè)字節(jié)
print(f.read(4))
print(f.tell())    #獲取執(zhí)行上述操作后的當(dāng)前位置
print(f.read(1))
print(f.tell())

效果:

  5.2 f.seek(offset[,whence])

  f代表以打開(kāi)的文件,seek()方法重新指定將要讀寫(xiě)的當(dāng)前位置。offset參數(shù)設(shè)置位置的偏移量的字節(jié)數(shù),whence參數(shù)可選,確定文件起計(jì)位置,默認(rèn)值為SEEK_SET(或0),代表從文件大的開(kāi)始位置+偏移量來(lái)確定當(dāng)前位置;SEEK_SET(或1),代表當(dāng)前位置起計(jì);SEEK_END(或2),代表從文件的結(jié)尾起計(jì)。

print(f.seek(17))
print(f.read(4))

效果:

在指定位置寫(xiě)內(nèi)容

f3 = open(r"g:/t2.txt","w")
print(f3.seek(17))
f3.write('---')
f3.close()

效果:

4. 文件異常處理

f_n = r"g:\t3.txt"
flag = False
try:                    #異常捕捉開(kāi)始
    f = open(f_n,"r")   #打開(kāi)t3.txt文件
    print(f.read())
    flag=True
except:                 #捕捉異常
    print("打開(kāi)%s文件出錯(cuò),請(qǐng)檢查!"%f_n)      #出錯(cuò)提示
finally:                #是否出錯(cuò),都強(qiáng)制執(zhí)行下列代碼
    if flag:            #如果文件打開(kāi)順利
        f.close()       #則關(guān)閉文件
        print("文件做關(guān)閉處理!")
    else:               #文件打開(kāi)出現(xiàn)異常
        print("程序關(guān)閉")

效果:

5. 文件與路徑

5.1 與路徑相關(guān)的操作 獲取程序運(yùn)行的當(dāng)前路徑

os.path.abspath§,abspath()以字符串形式為返回平臺(tái)歸一化的絕對(duì)路徑,p為指定的路徑名稱(字符型),若p為指定”(.)“,則代表當(dāng)前路徑。

import os
print(os.path.abspath(os.path.curdir))   #返回當(dāng)前絕對(duì)路徑

效果:

判斷指定路徑下是否存在文件

import os
print(os.path.exists(r"g:\\t1.txt"))        #用exists()方法判斷文件是否已經(jīng)存在

效果:

  exists§方法判斷指定路徑下的文件是否存在。若存在,則返回True,若不存在,則返回False。p為指定的來(lái)路徑的文件字符串,也可以通過(guò)isfile()方法直接判斷。

判斷指定路徑是否存在

isdir§方法判斷指定路徑是否存在,p為字符串格式的路徑,存在返回True,不存在則返回False。

import os
print(os.path.isdir(r"g:\\"))       #用isdir()方法判斷路徑是否存在

效果:

  exists§方法也可以用來(lái)直接判斷路徑

import os
print(os.path.exists(r"g:\\"))        #用exists()方法直接判斷路徑

效果:

建立文件夾(子路徑)

利用os模塊的makedirs§方法可以建立對(duì)應(yīng)的文件夾,p為字符串形式的需要建立的路徑,建立不成功,拋出OSError出錯(cuò)信息;建立成功,則在對(duì)應(yīng)的路徑下將發(fā)現(xiàn)新建立的文件夾。

import os
print(os.makedirs(r"g:\\files"))      #在g盤(pán)建立files文件夾

效果:


5.2 動(dòng)態(tài)指定路徑下建立新文件

import os
import sys

get_cur_path = os.path.abspath(os.path.curdir)
f_n = get_cur_path+"\\files"   #在當(dāng)前路徑建立子路徑files
try:
    if not os.path.isdir(f_n):   #確認(rèn)路徑是否存在
        os.makedirs(f_n)         #不存在,建立子路徑
except:                          #建立子路徑過(guò)程發(fā)生異常
    print("子文件夾%s建立出錯(cuò)!"%f_n)   #提示建立出錯(cuò)
    sys.exit()                      #退出程序

f_n = f_n+"\\t3.txt"
flag = False
try:
    f =open(f_n,"w")
    print(f.write("ok"))
    flag=True
    print("文件%s寫(xiě)入正常!"%f_n)
except:
    print("打開(kāi)%s文件出錯(cuò),請(qǐng)檢查!"%f_n)
finally:
    if flag:
        f.close()
        print("文件做關(guān)閉處理!")
    else:
        print("程序關(guān)閉")

效果:

總結(jié)

到此這篇關(guān)于python文件處理筆記之文本文件的文章就介紹到這了,更多相關(guān)python處理文本文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python?playwrigh框架入門(mén)安裝使用

    python?playwrigh框架入門(mén)安裝使用

    這篇文章主要為大家介紹了python?playwrigh框架入門(mén)的安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Python類的繼承與多態(tài)詳細(xì)介紹

    Python類的繼承與多態(tài)詳細(xì)介紹

    大家好,本篇文章主要講的是Python類的繼承與多態(tài)詳細(xì)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python3中的2to3轉(zhuǎn)換工具使用示例

    Python3中的2to3轉(zhuǎn)換工具使用示例

    這篇文章主要介紹了Python3中的2to3轉(zhuǎn)換工具使用示例,本文詳細(xì)講解了使用的步驟,并總結(jié)了一些使用注意事項(xiàng),需要的朋友可以參考下
    2015-06-06
  • 基于PyQt5制作一個(gè)PDF文件合并器

    基于PyQt5制作一個(gè)PDF文件合并器

    PDF文件合并工具是非常好用可以把多個(gè)pdf文件合并成一個(gè),本文將利用Python中的PyQT5模塊,制作一個(gè)簡(jiǎn)易的PDF文件合并器,感興趣的可以了解一下
    2022-03-03
  • Python 高級(jí)變量之字典和字符串詳解

    Python 高級(jí)變量之字典和字符串詳解

    這篇文章主要為大家介紹了Python 字典和字符串,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • Python插件機(jī)制實(shí)現(xiàn)詳解

    Python插件機(jī)制實(shí)現(xiàn)詳解

    這篇文章主要介紹了Python插件機(jī)制實(shí)現(xiàn)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python 實(shí)現(xiàn)堆排序算法代碼

    python 實(shí)現(xiàn)堆排序算法代碼

    python 實(shí)現(xiàn)堆排序算法代碼,需要的朋友可以參考下
    2012-06-06
  • Python實(shí)現(xiàn)線程池代碼分享

    Python實(shí)現(xiàn)線程池代碼分享

    這篇文章主要介紹了Python實(shí)現(xiàn)線程池代碼分享,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-06-06
  • Python之Pygame的Event事件模塊

    Python之Pygame的Event事件模塊

    這篇文章主要介紹了Pygame的Event事件模塊,事件(Event)是 Pygame 的重要模塊之一,它是構(gòu)建整個(gè)游戲程序的核心,Pygame 定義了一個(gè)專門(mén)用來(lái)處理事件的結(jié)構(gòu),即事件隊(duì)列,本文有一定參考價(jià)值,感興趣的同學(xué)可以閱讀參考
    2023-04-04
  • 利用Chatgpt開(kāi)發(fā)一款加減乘除計(jì)算器(Python代碼實(shí)現(xiàn))

    利用Chatgpt開(kāi)發(fā)一款加減乘除計(jì)算器(Python代碼實(shí)現(xiàn))

    這篇文章主要為大家詳細(xì)介紹了如何利用Chatgpt開(kāi)發(fā)一款加減乘除計(jì)算器(用Python代碼實(shí)現(xiàn)),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02

最新評(píng)論