日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

【289】◀▶ Python I/O 读写文本文件

發(fā)布時(shí)間:2024/4/14 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【289】◀▶ Python I/O 读写文本文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考:Python 文件 I/O

參考:Python OS 文件/目錄方法


  目錄:

01?open 函數(shù)用于打開一個(gè)文件,創(chuàng)建一個(gè) file 對象,相關(guān)的方法才可以調(diào)用它進(jìn)行讀寫。
02?File 對象file 對象使用 open 函數(shù)來創(chuàng)建。
03?rename 方法用于命名文件或目錄。
04?remove 方法用于刪除指定路徑的文件。
05?mkdir 方法用于以數(shù)字權(quán)限模式創(chuàng)建目錄。
??makedirs 方法用于多級創(chuàng)建目錄。
06?chdir 方法用于改變當(dāng)前工作目錄到指定的路徑。
07?getcwd 方法用于返回當(dāng)前工作目錄。
08?rmdir 方法用于刪除指定路徑的目錄。
09?

listdir 方法

用于返回指定的文件夾包含的文件或文件夾的名字的列表。
10?input 方法接受一個(gè)標(biāo)準(zhǔn)輸入數(shù)據(jù)。
11?raw_input 方法將所有輸入作為字符串看待,返回字符串類型。
-------- ??-------------------?-----------------------------------------------------------------------------------------------------

  文本文件讀寫舉例:

# 實(shí)現(xiàn)功能:從數(shù)據(jù)中每隔4行選取一個(gè) def a():fo = open("D:\\tmp\\a.txt", "r+")fo_w = open("D:\\tmp\\a1.txt", "w+")lines_new = fo.readlines()i = 0for l in lines_new:if i%4==0:fo_w.writelines(l[0:-1])i+=1fo.close()fo_w.close()# 實(shí)現(xiàn)功能:為每一個(gè)行文件添加后綴 def c():fo = open("D:\\tmp\\a.txt", "r+")fo_w = open("D:\\tmp\\a2.txt", "w+")lines_new = fo.readlines()for l in lines_new:fo_w.writelines(l+".zip\n")fo.close()fo_w.close()

?


?

  詳細(xì)說明:

序號類名稱?

功能說明

?語法 & 舉例
01open 函數(shù)?

====<<<< Description >>>>====

用于打開一個(gè)文件,創(chuàng)建一個(gè)??file? 對象,相關(guān)的方法才可以調(diào)用它進(jìn)行讀寫。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

open (name[, mode[, buffering]])
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

?? name:一個(gè)包含了你要訪問的文件名稱的字符串值。
?? mode:mode 決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個(gè)參數(shù)是非強(qiáng)制的,默認(rèn)文件訪問模式為只讀(r)。
?? buffering:如果 buffering 的值被設(shè)為 0,就不會有寄存。如果 buffering 的值取 1,訪問文件時(shí)會寄存行。如果將 buffering 的值設(shè)為大于 1 的整數(shù),表明了這就是的寄存區(qū)的緩沖大小。如果取負(fù)值,寄存區(qū)的緩沖大小則為系統(tǒng)默認(rèn)。
----------------------------------------------------------------------------------

====<<<< mode >>>>====

?? r:以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認(rèn)模式。文件不存在報(bào)錯
?? r+:打開一個(gè)文件用于讀寫。文件指針將會放在文件的開頭。文件不存在報(bào)錯
?? w:打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
?? w+:打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件

?? a:打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
?? a+:打開一個(gè)文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時(shí)會是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。

----------------------------------------------------------------------------------

====<<<< References >>>>====

參考:python文件打開方式詳解——a、a+、r+、w+區(qū)別
參考:python 文件讀寫模式r,r+,w,w+,a,a+的區(qū)別(附代碼示例)

? # 獲取柵格數(shù)據(jù) arcpy.env.workspace=r"D:\01-Working\2017\20171204-IDL_Average\temp\TSM" rs = arcpy.ListRasters()# 遍歷柵格數(shù)據(jù)獲取統(tǒng)計(jì)信息 # 首先需要建立柵格文件 # 將數(shù)據(jù)結(jié)果保留兩位小數(shù) # 輸出到txt文檔中fo = open("D:\\01-Working\\2017\\2017_Average\\temp\\tsm_stats.txt", "w+") for r in rs:ro = arcpy.Raster(r)fo.writelines(ro.name + "\n")fo.writelines("MAX: " + str(round(ro.maximum, 2)) + "\n")fo.writelines("MIN: " + str(round(ro.minimum, 2)) + "\n")fo.writelines("MEAN: " + str(round(ro.mean, 2)) + "\n\n")fo.close()

讀入文件示例:

>>> import os >>> fo = open("D:\\03-Study\\Python\\test\\test.txt", "r+") >>># 讀取全部為一個(gè)字符串(read) >>> lines = fo.read() >>> lines 'Line 1: aaaaaa\nLine 2: bbbbbb\nLine 3: cccccc\nLine >>> print lines Line 1: aaaaaa Line 2: bbbbbb Line 3: cccccc >>> fo.tell() 110L >>># 指針返回初始位置 >>> fo.seek(0) >>> fo.tell() 0L >>># 讀取數(shù)據(jù)的一行(readline) >>> lines_new = fo.readline() >>> lines_new 'Line 1: aaaaaa\n' >>># 讀取剩下的數(shù)據(jù)為一個(gè)列表(readlines) >>> lines_new2 = fo.readlines() >>> lines_new2 ['Line 2: bbbbbb\n', 'Line 3: cccccc\n'] >>> fo.close()

寫入文件示例:

>>> fo = open("D:\\03-Study\\Python\\test\\test.txt", "w+") >>> a = "Alex Lee" >>> b = ["a", "b", "c"] >>> fo.write(a)  #寫入全部(write) >>> fo.write("\n") #換行符 >>> fo.writelines(b) #寫入列表,無換行符(writelines) >>> for i in range(0, len(b)): ... b[i] = b[i] + "\n" ... >>> print b ['a\n', 'b\n', 'c\n'] >>> fo.write("\n") #換行符 >>> fo.writelines(b) #寫入列表,有換行符 >>> fo.close() >>> fo = open("D:\\03-Study\\Python\\test\\test.txt", "r+") >>> print fo.read() Alex Lee abc a b c

?

02 File 對象?

====<<<< Description >>>>====

file 對象使用 open 函數(shù)來創(chuàng)建。
----------------------------------------------------------------------------------

====<<<< Properties >>>>====

??? file.name:返回文件的名稱。
??? file.mode:返回被打開文件的訪問模式。
??? file.closed:返回true如果文件已被關(guān)閉,否則返回false。

----------------------------------------------------------------------------------

====<<<< Methods >>>>====

??? file.writelines (sequence):向文件寫入一個(gè)序列字符串列表,如果需要換行則要自己加入每行的換行符。
??? file.write (str):將字符串寫入文件,沒有返回值。要自己加換行符
??? file.truncate ([size]):用于截?cái)辔募?#xff0c;如果指定了可選參數(shù) size,則表示截?cái)辔募?size 個(gè)字符。 如果沒有指定 size,則從當(dāng)前位置起截?cái)?#xff1b;截?cái)嘀?size 后面的所有字符被刪除。
??? file.tell ():返回文件的當(dāng)前位置,即文件指針當(dāng)前位置。
??? file.seek (offset[, whence]):用于移動文件讀取指針到指定位置。
??? file.readlines ([sizeint]):讀取所有行并返回列表,若給定sizeint>0,則是設(shè)置一次讀多少字節(jié),這是為了減輕讀取壓力。
??? file.readline ([size]):讀取整行,包括 "\n" 字符。
??? file.read ([size]):從文件讀取指定的字節(jié)數(shù),如果未給定或?yàn)樨?fù)則讀取所有。
??? file.next ():返回文件下一行。
??? file.close ():關(guān)閉文件。關(guān)閉后文件不能再進(jìn)行讀寫操作。
----------------------------------------------------------------------------------

====<<<< References >>>>====

參考:python中readline判斷文件讀取結(jié)束的方法

?
03 rename 方法?

?====<<<< Description >>>>====

用于命名文件或目錄,從 src 到 dst,如果dst是一個(gè)存在的目錄, 將拋出OSError。(相當(dāng)于移動文件)
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.rename (src, dst)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

?? src:要修改的目錄名。
?? dst:修改后的目錄名。

? >>> import os >>> os.rename(r"D:\test.txt", r"D:\test1.txt") >>> os.rename(r"D:\test1.txt", r"D:\test2.txt")
04 remove 方法?

?====<<<< Description >>>>====

用于刪除指定路徑的文件。如果指定的路徑是一個(gè)目錄,將拋出OSError。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.remove (path)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

?? path:要移除的文件路徑。

參考:python 刪除文件、目錄(shutil.rmtree())

? # 實(shí)現(xiàn)刪除文件夾內(nèi)的HDF文件 import os rootdir = r"D:\tmp\tmp" for file in os.listdir(rootdir):if file.find("hdf") > 0:os.remove(os.path.join(rootdir, file))
?05mkdir 方法?

====<<<< Description >>>>====

用于以數(shù)字權(quán)限模式創(chuàng)建目錄。默認(rèn)的模式為 0777 (八進(jìn)制)。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.mkdir (path[, mode])
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

?? path:要創(chuàng)建的目錄。
?? mode:要為目錄設(shè)置的權(quán)限數(shù)字模式。

? >>> import os >>> os.mkdir(r"D:\folder")
?makedirs 方法?

====<<<< Description >>>>====

os.makedirs() 方法用于遞歸創(chuàng)建目錄。像 mkdir(), 但創(chuàng)建的所有intermediate-level文件夾需要包含子目錄。
----------------------------------------------------------------------------------

?

====<<<< Syntax >>>>====

?

os.makedirs (path[, mode])
----------------------------------------------------------------------------------

?

====<<<< Parameters >>>>====

?

?? path:要創(chuàng)建的目錄。
?? mode:要為目錄設(shè)置的權(quán)限數(shù)字模式。

?

??
?06chdir 方法?

====<<<< Description >>>>====

用于改變當(dāng)前工作目錄到指定的路徑。(工作空間修改
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.chdir (path)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

?? path:要切換到的新路徑。

? >>> import os >>> print os.getcwd() D:\01-Working\2018\20180115-濃煙專題圖 >>> os.chdir(r"D:\03-Study\Python\test") >>> os.rmdir("folder") ?
07 getcwd 方法?

====<<<< Description >>>>====

用于返回當(dāng)前工作目錄。(import sys)
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.getcwd ()

?
08 rmdir 方法?

====<<<< Description >>>>====

用于刪除指定路徑的目錄。僅當(dāng)這文件夾是空的才可以, 否則, 拋出OSError。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.rmdir (path)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

?? path:要刪除的目錄路徑。

?
?09listdir 方法?

====<<<< Description >>>>====

用于返回指定的文件夾包含的文件或文件夾的名字的列表。這個(gè)列表以字母順序。 它不包括 '.' 和'..' 即使它在文件夾中。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

os.listdir (path)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

?? path:需要列出的目錄路徑。

? >>> import os >>> print os.listdir(r"D:\test") ['11.txt', 'cnblog1.txt', 'frame.ui']
10input 方法?

====<<<< Description >>>>====

Python3.x 中 input() 函數(shù)接受一個(gè)標(biāo)準(zhǔn)輸入數(shù)據(jù),返回為 string 類型。
Python2.x 中 input() 相等于 eval(raw_input(prompt)) ,用來獲取控制臺的輸入。
raw_input() 將所有輸入作為字符串看待,返回字符串類型。而 input() 在對待純數(shù)字輸入時(shí)具有自己的特性,它返回所輸入的數(shù)字的類型( int, float )。

注意:input() 和 raw_input() 這兩個(gè)函數(shù)均能接收 字符串 ,但 raw_input() 直接讀取控制臺的輸入(任何類型的輸入它都可以接收)。而對于 input() ,它希望能夠讀取一個(gè)合法的 python 表達(dá)式,即你輸入字符串的時(shí)候必須使用引號將它括起來,否則它會引發(fā)一個(gè) SyntaxError 。
除非對 input() 有特別需要,否則一般情況下我們都是推薦使用 raw_input() 來與用戶交互。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>===

input ([prompt])
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

?? prompt:可選,字符串,可作為一個(gè)提示語。

? >>> a = input("input:") input:123 >>> type(a) <type 'int'> >>> a 123 >>> a = input("input:") input:"alex" >>> a 'alex' >>> a = input("input:") input:alexTraceback (most recent call last):File "<pyshell#23>", line 1, in <module>a = input("input:")File "<string>", line 1, in <module> NameError: name 'alex' is not defined
11raw_input 方法?

====<<<< Description >>>>====

用來獲取控制臺的輸入。
將所有輸入作為字符串看待,返回字符串類型。
----------------------------------------------------------------------------------

?

====<<<< Syntax >>>>====

?

raw_input ([prompt])
----------------------------------------------------------------------------------

?

====<<<< Parameters >>>>====

?

?? prompt:可選,字符串,可作為一個(gè)提示語。

?

? >>> a = raw_input("input:") input:123 >>> type(a) <type 'str'> >>> a '123' >>> a = raw_input("input:") input:alex >>> a 'alex'
------------------------------------????

總結(jié)

以上是生活随笔為你收集整理的【289】◀▶ Python I/O 读写文本文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。