最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中os模塊的使用及文件對象的讀寫詳解

 更新時(shí)間:2023年08月25日 08:30:26   作者:徠胖  
這篇文章主要介紹了Python中os模塊的使用及文件對象的讀寫詳解,Python?open()?方法用于打開一個(gè)文件,并創(chuàng)建返回文件對象,在對文件進(jìn)行處理過程都需要使用到這個(gè)函數(shù),如果該文件無法被打開,會(huì)拋出?OSError,需要的朋友可以參考下

os模塊和os.path() 模塊

#導(dǎo)入模塊
import os
print(os.name)#輸出字符串表示正在使用的平臺。如果是window,則用'nt'表示。如果是linux/unix,則輸出'posix'
print(os.getcwd())#函數(shù)得到當(dāng)前工作目錄,即當(dāng)前python腳本工作的目錄路徑
print(os.listdir())#返回指定目錄下的所有文件和文件夾目錄名(文件夾下的內(nèi)容不顯示)。此時(shí)輸出的是os.getcwd()路徑下的內(nèi)容
print(os.listdir('C:\人機(jī)交互')) #此時(shí)輸出的是C:\人機(jī)交互  目錄下的內(nèi)容
os.chdir('C:\人機(jī)交互')#切換目錄。os.chdir() 方法用于改變當(dāng)前工作目錄到指定的路徑。
print(os.getcwd()) #切換目錄后,再次查看

在這里插入圖片描述

os.path() 模塊

#os.path.split(path)	把路徑分割成 dirname 和 basename,返回一個(gè)元組
print(os.path.split('C:\\Users\\。\\Python基礎(chǔ)學(xué)習(xí)'))
#os.path.exists(path)	如果路徑 path 存在,返回 True;如果路徑 path 不存在,返回 False。
print(os.path.exists('C:\\Users\。\Python基礎(chǔ)學(xué)習(xí)'))

在這里插入圖片描述

相對路徑和絕對路徑

#要打開"C:\人機(jī)交互\test.txt"。
#此時(shí)的工作目錄為:C:\Users\。\Python基礎(chǔ)學(xué)習(xí)
print(os.getcwd())
f = open('test.txt') #這種寫法是相對路徑

在這里插入圖片描述

由上面的運(yùn)行結(jié)果可以看出,報(bào)錯(cuò)。

因?yàn)楫?dāng)前的工作路徑為C:\Users\。\Python基礎(chǔ)學(xué)習(xí)。

而這個(gè)路徑下沒有test.txt。(即當(dāng)前工作目錄不是文件所在目錄,不能用相對路徑)寫成絕對路徑則不會(huì)報(bào)錯(cuò)。

如下代碼:

#要打開"C:\人機(jī)交互\test.txt"。
#此時(shí)的工作目錄為:C:\Users\。\Python基礎(chǔ)學(xué)習(xí)
print(os.getcwd())
f = open(r"C:\人機(jī)交互\test.txt") #絕對路徑

若想要寫成相對路徑,則要切換工作目錄。如下:

#要打開"C:\人機(jī)交互\test.txt"。
os.chdir("C:\人機(jī)交互")
#在申明了目錄之后,就可以直接寫文件名了。
f = open('test.txt') #相對路徑
print(f.read())

在這里插入圖片描述

文件路徑的書寫格式

.csv就是帶格式的.txt文本文件,又叫逗號分隔符文件。.csv可以直接用excel打開,也可以用記事本打開

#路徑的書寫格式
#使用單個(gè)斜杠:/
path1 = 'C:/python數(shù)據(jù)分析/text.txt' #單引號或雙引號均可
#使用兩個(gè)反斜杠:\\。第一個(gè)斜杠代表轉(zhuǎn)義字符
path2 = "C:\\python數(shù)據(jù)分析\\text.txt"
#使用r,r用于防止轉(zhuǎn)義字符
path3 = r"C:\python數(shù)據(jù)分析\text.txt"
'''
若只用但個(gè)反斜杠\,會(huì)發(fā)現(xiàn)有時(shí)候行,有時(shí)候不行。因?yàn)榉葱备躙可以轉(zhuǎn)義很多字符,以便在字符串中可以使用一些特殊字符
比如\n表示換行,\t表示制表符。
所以最好不要使用單個(gè)反斜杠
'''
print(path1,type(path1))
print(path2)
print(path3)

在這里插入圖片描述

print('\p')#未轉(zhuǎn)義,以普通字符輸出
print('\t')#轉(zhuǎn)義字符,\t代表制表符

在這里插入圖片描述

文件對象 python file文件鏈接

file 對象使用 open 函數(shù)來創(chuàng)建,下面列出了 file 對象常用的函數(shù): 注意:open()函數(shù)的用法見(3)

在這里插入圖片描述

file.close()關(guān)閉文件。關(guān)閉后文件不能再進(jìn)行讀寫操作。
file.flush()刷新文件內(nèi)部緩沖,直接把內(nèi)部緩沖區(qū)的數(shù)據(jù)立刻寫入文件, 而不是被動(dòng)的等待輸出緩沖區(qū)寫入。
file.fileno()返回一個(gè)整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上。
file.isatty()如果文件連接到一個(gè)終端設(shè)備返回 True,否則返回 False。
file.next()返回文件下一行。
file.read([size])從文件讀取指定的字節(jié)數(shù),如果未給定或?yàn)樨?fù)則讀取所有。
file.readline([size])讀取整行,包括 “\n” 字符。
file.readlines([sizeint])讀取所有行并返回列表,若給定sizeint>0,則是設(shè)置一次讀多少字節(jié),這是為了減輕讀取壓力。
file.seek(offset[, whence])設(shè)置文件當(dāng)前位置,用于移動(dòng)文件讀取指針到指定位置。
file.tell()返回文件當(dāng)前位置。
file.truncate([size])截取文件,截取的字節(jié)通過size指定,默認(rèn)為當(dāng)前文件位置。
file.write(str)將字符串寫入文件,返回的是寫入的字符長度。
file.writelines(sequence)向文件寫入一個(gè)序列字符串列表,如果需要換行則要自己加入每行的換行符

打開文件,open語句

Python open() 方法用于打開一個(gè)文件,并創(chuàng)建返回文件對象,在對文件進(jìn)行處理過程都需要使用到這個(gè)函數(shù),如果該文件無法被打開,會(huì)拋出 OSError。 如:f = open(file, mode=‘r’) f是一個(gè)文件對象

注意:使用 open() 方法一定要保證關(guān)閉文件對象,即調(diào)用 close() 方法。

open() 函數(shù)常用形式是接收兩個(gè)參數(shù):文件名(file)和模式(mode)。open(file, mode=‘r’)

完整的語法格式為:open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 參數(shù)說明:file: 必需,文件路徑(相對或者絕對路徑)、mode: 可選,文件打開模式。 buffering: 設(shè)置緩沖、encoding: 一般使用utf8、errors: 報(bào)錯(cuò)級別、newline: 區(qū)分換行符 closefd: 傳入的file參數(shù)類型

注意:用w或a模式打開文件的話,如果文件不存在,那么就自動(dòng)創(chuàng)建。 此外,用w模式打開一個(gè)已經(jīng)存在的文件時(shí),原有文件的內(nèi)容會(huì)被清空,因?yàn)橐婚_始文件的操作的標(biāo)記是在文件的開頭的,這時(shí)候進(jìn)行寫操作,無疑會(huì)把原有的內(nèi)容給抹掉。

#讀取文件:open語句
#python open() 函數(shù)用于打開一個(gè)文件,創(chuàng)建一個(gè) file 對象,
#open(file, mode='r', encoding=None)即:open('路徑','模式',encoding='編碼')
#模式: r(讀取文件,默認(rèn)),w(寫入),rw(讀取寫入),a(追加)
f = open(path1)
print(type(f))
print(f)

在這里插入圖片描述

查看文件的編碼方式

encoding設(shè)置方法 查看文件的編碼方式:以.csv或者.txt為例,先用記事本打開該文件,然后點(diǎn)擊另存為,在彈出的另存為對話框中,你就可以看到文件的編碼格式

如下圖,可以看出IRIS.csv的編碼方式為UTF-8

在這里插入圖片描述

encoding設(shè)置: 當(dāng)文件編碼方式為ANSI時(shí),encoding=‘gbk’ 當(dāng)編碼方式為UTF-8時(shí),encoding=‘utf8’

讀取文件fileObject.read(),以及f.readline()、f.readlines()

fileObject.read(size=-1); size : 從文件中讀取的字符數(shù),如果未給定或?yàn)樨?fù)則讀取所有。

注意:讀取后,光標(biāo)會(huì)停留在讀取末尾,再次運(yùn)行.read()之后,由于光標(biāo)位于末尾,再次讀取輸出為空

#fileObject.read(size=-1); size -- 從文件中讀取的字節(jié)數(shù),如果未給定或?yàn)樨?fù)則讀取所有。
#讀取后,光標(biāo)會(huì)停留在讀取末尾,再次運(yùn)行.read()之后,由于光標(biāo)位于末尾,再次讀取輸出為空
print('首次讀取')
print(f.read())
print('二次讀取')
print(f.read())
print('down')

在這里插入圖片描述

#現(xiàn)在用f.seek()來移動(dòng)光標(biāo)
f.seek(0)
print(f.read(2))
print(f.read(3))
f.seek(0)

在這里插入圖片描述

f.readline()和f.readlines()

f.readline() 方法用于從文件讀取整行,包括 “\n” 字符。一次性讀取一行 f.readline(n) #讀取該行的前n個(gè)字符 f.readlines() 方法用于讀取所有行(直到結(jié)束符 EOF)并返回列表,該列表可以由 Python 的 for… in … 結(jié)構(gòu)進(jìn)行處理。也會(huì)讀取\n。 f.readlines()返回列表,包含所有的行。無參數(shù)。

文件內(nèi)容如下:

在這里插入圖片描述

path = r"C:\python數(shù)據(jù)分析\text1.txt"
f = open(path,encoding='utf8')
f.seek(0)
print(f.readline()) #因?yàn)闀?huì)讀取換行符\n,所以輸出的結(jié)果中一行空白
print(f.readline(4))
print(f.readline(4))
print(f.readline())

在這里插入圖片描述

f.seek(0)
for line in f.readlines():
    print(type(line),line)

在這里插入圖片描述

file.seek(offset[, whence])

設(shè)置文件當(dāng)前位置

seek() 方法用于移動(dòng)文件讀取指針到指定位置。 fileObject.seek(offset[, whence=0])

參數(shù):offset – 開始的偏移量,也就是代表需要移動(dòng)偏移的字節(jié)數(shù)

whence:可選,默認(rèn)值為 0。給offset參數(shù)一個(gè)定義,表示要從哪個(gè)位置開始偏移;

0代表從文件開頭開始算起,1代表從當(dāng)前位置開始算起,2代表從文件末尾算起。

返回值:如果操作成功,則返回新的文件位置,如果操作失敗,則函數(shù)返回 -1。

#現(xiàn)在用f.seek()來移動(dòng)光標(biāo)
#現(xiàn)在用f.seek()來移動(dòng)光標(biāo)
print('首次讀取')
print(f.read())
print('二次讀取')
print(type(f.seek(0)))
print(f.read())
print('down')
f.seek(0)

在這里插入圖片描述

文件的寫入f.write(str)、f.writelines(seq)

write(str) 方法用于向文件中寫入指定字符串。 在文件關(guān)閉前或緩沖區(qū)刷新前,字符串內(nèi)容存儲在緩沖區(qū)中,這時(shí)你在文件中是看不到寫入的內(nèi)容的。 語法:參數(shù):str 要寫入文件的字符串。返回值:返回的是寫入的字符長度。(Returns the number of characters written (which is always equal to the length of the string).)

注意:如果文件打開模式帶 b,那寫入文件內(nèi)容時(shí),str (參數(shù))要用 encode 方法轉(zhuǎn)為 bytes 形式,否則報(bào)錯(cuò):TypeError: a bytes-like object is required, not ‘str’。

import os
path = r"C:\python數(shù)據(jù)分析\text3.txt"
f = open(path,'w',encoding='utf8')
print(f.write('你好,世界!'))
print(f.write('hello world!'))
f.close()

在這里插入圖片描述

writelines() 方法用于向文件中寫入一序列的字符串。

這一序列字符串可以是由迭代對象產(chǎn)生的,如一個(gè)字符串列表。

換行需要制定換行符 \n。

語法如下:fileObject.writelines( [str]) 參數(shù):str – 要寫入文件的字符串序列。

返回值:該方法沒有返回值。

path = r"C:\python數(shù)據(jù)分析\text2.txt"
f = open(path,'w',encoding='utf8')
lst = ['hello','wordl','你好呀']
f.writelines(lst)
f.close()
#f.writelines(lst)依次把元素寫入,但沒有加換行符。
#如果要想加上換行符,則需要在每個(gè)元素后面加上\n

打開text2.txt。文件內(nèi)容如下:

在這里插入圖片描述

path = r"C:\python數(shù)據(jù)分析\text2.txt"
f = open(path,'w',encoding='utf8')
lst = ['hello','wordl','你好呀']
for i in range(len(lst)):
    lst[i] = lst[i] + '\n'
print(lst)
f.writelines(lst)
f.close()
#f.writelines(lst)依次把元素寫入,但沒有加換行符。
#如果要想加上換行符,則需要在每個(gè)元素后面加上\n

在這里插入圖片描述

關(guān)閉文件f.close()

f.close()
#print(f.read()) #關(guān)閉后無法讀取

到此這篇關(guān)于Python中os模塊的使用及文件對象的讀寫詳解的文章就介紹到這了,更多相關(guān)Python中os模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python數(shù)據(jù)結(jié)構(gòu)與算法中的棧詳解(1)

    Python數(shù)據(jù)結(jié)構(gòu)與算法中的棧詳解(1)

    這篇文章主要為大家詳細(xì)介紹了Python中的棧,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 使用python實(shí)現(xiàn)讀取文件夾中所有excel

    使用python實(shí)現(xiàn)讀取文件夾中所有excel

    相信很多坐在辦公室上班的朋友每天都需要處理大量的數(shù)據(jù),本文我們就來看看如何使用Openpyxl讀取文件夾下所有Excel文檔中的數(shù)據(jù),文中示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-12-12
  • pandas參數(shù)設(shè)置的實(shí)用小技巧

    pandas參數(shù)設(shè)置的實(shí)用小技巧

    這篇文章主要給大家介紹了關(guān)于pandas參數(shù)設(shè)置的實(shí)用小技巧,文中通過實(shí)例代碼結(jié)束的非常詳細(xì),對大家學(xué)習(xí)或者使用pandas具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python?/?PyCharm虛擬環(huán)境搭建與使用方法詳解

    Python?/?PyCharm虛擬環(huán)境搭建與使用方法詳解

    虛擬環(huán)境是在本地創(chuàng)建一個(gè)獨(dú)立的Python環(huán)境,這個(gè)環(huán)境擁有自己的獨(dú)立的Python解釋器和包管理器,不與系統(tǒng)環(huán)境和其他虛擬環(huán)境產(chǎn)生干擾,這篇文章主要介紹了Python/PyCharm虛擬環(huán)境搭建與使用方法的相關(guān)資料,需要的朋友可以參考下
    2025-08-08
  • python使用itchat庫實(shí)現(xiàn)微信機(jī)器人(好友聊天、群聊天)

    python使用itchat庫實(shí)現(xiàn)微信機(jī)器人(好友聊天、群聊天)

    itchat是一個(gè)開源的微信個(gè)人號接口,可以使用該庫進(jìn)行微信網(wǎng)頁版中的所有操作。本文主要使用該庫完成一個(gè)能夠處理微信消息的的圖靈機(jī)器人,包括好友聊天、群聊天,感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2018-01-01
  • 利用Python實(shí)現(xiàn)文檔格式互轉(zhuǎn)的操作大全(PDF、Word、圖片、Markdown)

    利用Python實(shí)現(xiàn)文檔格式互轉(zhuǎn)的操作大全(PDF、Word、圖片、Markdown)

    客戶要求提交簡歷必須是PDF,但你只有Word版,手動(dòng)轉(zhuǎn)換后格式全亂,需要從PDF報(bào)告中提取圖表,卻發(fā)現(xiàn)無法直接復(fù)制,只能一張張截圖,所以本文將手把手教你如何利用Python輕松實(shí)現(xiàn)DF、Word、圖片、Markdown的高效轉(zhuǎn)換,需要的朋友可以參考下
    2025-11-11
  • Python+Pygame實(shí)戰(zhàn)之詩詞填空游戲的實(shí)現(xiàn)

    Python+Pygame實(shí)戰(zhàn)之詩詞填空游戲的實(shí)現(xiàn)

    成語接龍大家都玩過,但詩詞填空大家玩過嗎?把成語接龍變成填空題。難度可上漲了不止一個(gè)檔次呢!本文就來用Python和Pygame實(shí)現(xiàn)詩詞填空游戲,需要的可以參考一下
    2022-12-12
  • 使用 Python 實(shí)現(xiàn)文件遞歸遍歷的三種方式

    使用 Python 實(shí)現(xiàn)文件遞歸遍歷的三種方式

    這篇文章主要介紹了使用 Python 實(shí)現(xiàn)文件遞歸遍歷的三種方式,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07
  • 關(guān)于Python中幾種隊(duì)列Queue用法區(qū)別

    關(guān)于Python中幾種隊(duì)列Queue用法區(qū)別

    這篇文章主要介紹了關(guān)于Python中幾種隊(duì)列Queue用法區(qū)別,queue隊(duì)列中的put()或者get()方法中都提供了timeout參數(shù),利用這個(gè)參數(shù)可以有效解決上述消除不能消費(fèi)和線程一直阻塞問題,需要的朋友可以參考下
    2023-05-05
  • Python中分?jǐn)?shù)的相關(guān)使用教程

    Python中分?jǐn)?shù)的相關(guān)使用教程

    這篇文章主要介紹了Python中分?jǐn)?shù)的相關(guān)使用教程,主要涉及分?jǐn)?shù)的計(jì)算、約分等簡單操作,是Python學(xué)習(xí)過程當(dāng)中的基礎(chǔ),需要的朋友可以參考下
    2015-03-03

最新評論

惠东县| 阜南县| 桐梓县| 永平县| 松原市| 定安县| 翁源县| 二连浩特市| 吴堡县| 仲巴县| 湘潭市| 安庆市| 都兰县| 沁源县| 亳州市| 珠海市| 东乌| 江油市| 荥经县| 手游| 克拉玛依市| 博爱县| 山丹县| 满洲里市| 绍兴县| 岳普湖县| 汶上县| 崇明县| 那坡县| 邵阳县| 麻江县| 扬中市| 阿克苏市| 民乐县| 上犹县| 武功县| 南江县| 乐平市| 兴城市| 龙岩市| 栖霞市|