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

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

 更新時間:2023年08月25日 08:30:26   作者:徠胖  
這篇文章主要介紹了Python中os模塊的使用及文件對象的讀寫詳解,Python?open()?方法用于打開一個文件,并創(chuàng)建返回文件對象,在對文件進(jìn)行處理過程都需要使用到這個函數(shù),如果該文件無法被打開,會拋出?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)容不顯示)。此時輸出的是os.getcwd()路徑下的內(nèi)容
print(os.listdir('C:\人機(jī)交互')) #此時輸出的是C:\人機(jī)交互  目錄下的內(nèi)容
os.chdir('C:\人機(jī)交互')#切換目錄。os.chdir() 方法用于改變當(dāng)前工作目錄到指定的路徑。
print(os.getcwd()) #切換目錄后,再次查看

在這里插入圖片描述

os.path() 模塊

#os.path.split(path)	把路徑分割成 dirname 和 basename,返回一個元組
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"。
#此時的工作目錄為:C:\Users\。\Python基礎(chǔ)學(xué)習(xí)
print(os.getcwd())
f = open('test.txt') #這種寫法是相對路徑

在這里插入圖片描述

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

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

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

如下代碼:

#要打開"C:\人機(jī)交互\test.txt"。
#此時的工作目錄為: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打開,也可以用記事本打開

#路徑的書寫格式
#使用單個斜杠:/
path1 = 'C:/python數(shù)據(jù)分析/text.txt' #單引號或雙引號均可
#使用兩個反斜杠:\\。第一個斜杠代表轉(zhuǎn)義字符
path2 = "C:\\python數(shù)據(jù)分析\\text.txt"
#使用r,r用于防止轉(zhuǎn)義字符
path3 = r"C:\python數(shù)據(jù)分析\text.txt"
'''
若只用但個反斜杠\,會發(fā)現(xiàn)有時候行,有時候不行。因?yàn)榉葱备躙可以轉(zhuǎn)義很多字符,以便在字符串中可以使用一些特殊字符
比如\n表示換行,\t表示制表符。
所以最好不要使用單個反斜杠
'''
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ù)立刻寫入文件, 而不是被動的等待輸出緩沖區(qū)寫入。
file.fileno()返回一個整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上。
file.isatty()如果文件連接到一個終端設(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)前位置,用于移動文件讀取指針到指定位置。
file.tell()返回文件當(dāng)前位置。
file.truncate([size])截取文件,截取的字節(jié)通過size指定,默認(rèn)為當(dāng)前文件位置。
file.write(str)將字符串寫入文件,返回的是寫入的字符長度。
file.writelines(sequence)向文件寫入一個序列字符串列表,如果需要換行則要自己加入每行的換行符

打開文件,open語句

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

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

open() 函數(shù)常用形式是接收兩個參數(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)錯級別、newline: 區(qū)分換行符 closefd: 傳入的file參數(shù)類型

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

#讀取文件:open語句
#python open() 函數(shù)用于打開一個文件,創(chuàng)建一個 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時,encoding=‘gbk’ 當(dāng)編碼方式為UTF-8時,encoding=‘utf8’

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

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

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

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

在這里插入圖片描述

#現(xiàn)在用f.seek()來移動光標(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個字符 f.readlines() 方法用于讀取所有行(直到結(jié)束符 EOF)并返回列表,該列表可以由 Python 的 for… in … 結(jié)構(gòu)進(jìn)行處理。也會讀取\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)闀x取換行符\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() 方法用于移動文件讀取指針到指定位置。 fileObject.seek(offset[, whence=0])

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

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

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

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

#現(xiàn)在用f.seek()來移動光標(biāo)
#現(xiàn)在用f.seek()來移動光標(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ū)中,這時你在文件中是看不到寫入的內(nèi)容的。 語法:參數(shù):str 要寫入文件的字符串。返回值:返回的是寫入的字符長度。(Returns the number of characters written (which is always equal to the length of the string).)

注意:如果文件打開模式帶 b,那寫入文件內(nèi)容時,str (參數(shù))要用 encode 方法轉(zhuǎn)為 bytes 形式,否則報(bào)錯: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)生的,如一個字符串列表。

換行需要制定換行符 \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)依次把元素寫入,但沒有加換行符。
#如果要想加上換行符,則需要在每個元素后面加上\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)依次把元素寫入,但沒有加換行符。
#如果要想加上換行符,則需要在每個元素后面加上\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利用yarl實(shí)現(xiàn)輕松操作url

    Python利用yarl實(shí)現(xiàn)輕松操作url

    在諸如網(wǎng)絡(luò)爬蟲、web應(yīng)用開發(fā)等場景中,我們需要利用Python完成大量的url解析、生成等操作。本文為大家介紹了Pythonyarl操作url的方法,需要的可以了解一下
    2022-10-10
  • 解決tensorflow 釋放圖,刪除變量問題

    解決tensorflow 釋放圖,刪除變量問題

    這篇文章主要介紹了解決tensorflow 釋放圖,刪除變量問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python內(nèi)存管理方式和垃圾回收算法解析

    Python內(nèi)存管理方式和垃圾回收算法解析

    這篇文章主要介紹了Python內(nèi)存管理方式和垃圾回收算法解析,介紹了傳統(tǒng)的垃圾回收機(jī)制,其工作方法,finalizer的問題等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 詳解python編譯器和解釋器的區(qū)別

    詳解python編譯器和解釋器的區(qū)別

    在本文中小編給讀者們整理了關(guān)于python編譯器和解釋器的區(qū)別的知識點(diǎn)內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下。
    2019-06-06
  • Python爬取數(shù)據(jù)并寫入MySQL數(shù)據(jù)庫的實(shí)例

    Python爬取數(shù)據(jù)并寫入MySQL數(shù)據(jù)庫的實(shí)例

    今天小編就為大家分享一篇Python爬取數(shù)據(jù)并寫入MySQL數(shù)據(jù)庫的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 理解生產(chǎn)者消費(fèi)者模型及在Python編程中的運(yùn)用實(shí)例

    理解生產(chǎn)者消費(fèi)者模型及在Python編程中的運(yùn)用實(shí)例

    生產(chǎn)者消費(fèi)者模型一般用于體現(xiàn)程序的多線程并發(fā)性,Python的多線程雖然受到GIL控制,但依然可以構(gòu)建隊(duì)列來簡單體現(xiàn)出模型的思路,這里我們就來共同理解生產(chǎn)者消費(fèi)者模型及在Python編程中的運(yùn)用實(shí)例:
    2016-06-06
  • Python對Excel進(jìn)行處理的實(shí)操指南

    Python對Excel進(jìn)行處理的實(shí)操指南

    這篇文章主要給大家介紹了關(guān)于Python對Excel進(jìn)行處理的實(shí)操指南,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Django 對IP訪問頻率進(jìn)行限制的例子

    Django 對IP訪問頻率進(jìn)行限制的例子

    今天小編就為大家分享一篇Django 對IP訪問頻率進(jìn)行限制的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python中tkinter實(shí)現(xiàn)GUI程序三個實(shí)例教程

    python中tkinter實(shí)現(xiàn)GUI程序三個實(shí)例教程

    Python提供了多個GUI庫,使開發(fā)人員能夠輕松創(chuàng)建各種交互式界面,這篇文章主要給大家介紹了關(guān)于python中tkinter實(shí)現(xiàn)GUI程序的三個實(shí)例教程,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • 使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請求

    使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請求

    本文主要介紹了使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評論