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

Python學(xué)習(xí)之文件的創(chuàng)建與寫入詳解

 更新時間:2022年03月23日 08:26:41   作者:渴望力量的哈士奇  
本文主要介紹了Python中關(guān)于文件的處理,即如何創(chuàng)建、讀寫一個文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

在前面章節(jié)我們通過 os包學(xué)習(xí)了如何創(chuàng)建、讀取一個文件夾,但是并沒有學(xué)習(xí)如何創(chuàng)建、讀寫一個文件,接下來我們就學(xué)習(xí)關(guān)于文件的處理。當(dāng)我們學(xué)習(xí)完文件處理之后,就可以隨意讀寫文件。

內(nèi)置函數(shù) - open 獲取文件對象

open() 函數(shù)

open()函數(shù)是是python的讀寫文件的基本函數(shù),它可以生成文件對象可以創(chuàng)建,也可以操作文件的讀寫。

用法:

open(path, mode)

參數(shù)說明:

path:文件路徑

mode:操作模式;比如讀文件的模式,寫文件的模式。下文有詳細(xì)介紹

返回值:

文件對象

示例用法如下:

file = open('d://test.txt', 'w')

# >>> 代碼釋義:使用 open() 函數(shù) 對 D 磁盤下的 'test.txt' 文件執(zhí)行寫入的操作 ( w 為寫入的操作 ) 并賦值給變量 file

利用文件對象進(jìn)行創(chuàng)建與寫入

文件操作的寫入模式

模式介紹
w創(chuàng)建文件(w為寫入的操作,當(dāng)文件不存在時,則會創(chuàng)建文件;已創(chuàng)建文件,則內(nèi)容會被覆蓋)
w+創(chuàng)建文件并讀取文件
wb二進(jìn)制形式創(chuàng)建文件(與 w 的功能相同,只不過 web 的寫入類型為 byte )
wb+二進(jìn)制形式創(chuàng)建或追加內(nèi)容(如果文件存在不會覆蓋原本的內(nèi)容,而是以 byte 類型進(jìn)行追加)
a在文件中追加內(nèi)容,如果沒有該文件則會創(chuàng)建文件
a+讀寫模式追加(同樣是追加內(nèi)容,只不過賦予了讀取的功能)
ab+二進(jìn)制形式讀寫追加(可以追加并讀取 byte 類型的模式)

文件對象的寫入操作方法

方法名參數(shù)介紹舉例
writeMessage(字符串)寫入信息
如果是帶有b的模式,則會變?yōu)?byte 類型
f.write(‘hello\n’)
writelinesMessage_list(列表)批量寫入
列表內(nèi)須是字符串,按照索引位置依次寫入;
若為b的模式,同上
f.writelines([‘a\n’, ‘b\n’])
close關(guān)閉并保存文件f.close()

注意:操作文件完成后,必須使用 close 方法?。?!不然可能會造成內(nèi)存占用,如果反復(fù)生成文件對象進(jìn)行寫入操作,可能會造成內(nèi)存溢出,我們的程序就會出問題了。

使用 w 模式 執(zhí)行 write 方法

import os
import os.path


current_path = os.getcwd()
# print(current_path)

file_test = open(current_path + '/' + 'test.txt', 'w', encoding='utf-8')    
# 注意如果是在WIN系統(tǒng),在寫入中文時,需要設(shè)置編碼格式;如果不是WIN系統(tǒng),則不需要設(shè)置編碼格式

file_test.write('Python 是一門優(yōu)雅的編程語言')
file_test.close()

上文腳本我們提及,如果是在WIN系統(tǒng),在寫入中文時,需要設(shè)置編碼格式。如果不設(shè)置編碼格式,雖然不會報錯,也可以寫入成功。但是打開寫入的文件,就如同下圖:

我們繼上面演示的案例,在 text.txt 文件的基礎(chǔ)上,繼續(xù)演示 w 模式的功能。

import os
import os.path


current_path = os.getcwd()
# print(current_path)

file_test = open(current_path + '/' + 'test.txt', 'w', encoding='utf-8')
file_test.write('Python 是一門優(yōu)雅的編程語言')
file_test.close()

file_path = os.path.join(current_path, 'test.txt')
file_test = open(file_path, 'w', encoding='utf-8')
file_test.write('Python 不僅是一門優(yōu)雅的編程語言,還不掉頭發(fā)')

可以看到我們針對 text.txt 文件的基礎(chǔ)上,繼續(xù)演示的 w 模式 新傳入的 Python 不僅是一門優(yōu)雅的編程語言,還不掉頭發(fā) 已經(jīng)覆蓋了 text.txt 文件原本的內(nèi)容。

使用 w+ 模式 執(zhí)行 write 方法

這里我們先 利用 w+ 模式 寫入內(nèi)容

import os.path


current_path = os.getcwd()

file_path = os.path.join(current_path, 'test.txt')
file_test = open(file_path, 'w+', encoding='utf-8')
file_test.write('人生苦短 我用Python')
file_test.close()

區(qū)別于 w 模式,w+ 模式 不僅可以創(chuàng)建文件,還可以讀取文件。下面我看看看 如何 讀取文件。(需要注意的是,讀取的操作需要在終端操作,Pycharm 不顯示讀取的結(jié)果)

import os.path


current_path = os.getcwd()

file_path = os.path.join(current_path, 'test.txt')
file_test = open(file_path, 'w+', encoding='utf-8')
file_test.write('人生苦短 我用Python')
file_test.read()
file_test.seek(0)
file_test.read()
file_test.close()

注意:只有 w+ 模式可以使用 read() 與 seek() 函數(shù) 讀取文件內(nèi)容 ,w 模式使用 read() 函數(shù) 讀取文件內(nèi)容會報錯 ,如下圖:

使用 ab 模式 執(zhí)行 write 方法

我們先 使用 ab 模式 嘗試將 字符串 通過 write 方法以追加的形式寫入文件

import os.path


current_path = os.getcwd()

file_path = os.path.join(current_path, 'test.txt')
file_test = open(file_path, 'ab')
file_test.write('Python 是一種很有意思的編程語言')

終端執(zhí)行效果如下:

由于我們傳入的是 字符串類型 ,無法直接追加寫入文件,那么我們 將字符串轉(zhuǎn)為 byte 類型是否能成功呢?

這又是為何?難道我們使用方法的姿勢不對?其實不然,這里寫入的 byte 類型 我們需要先轉(zhuǎn)為 byte 類型 才可以成功的寫入。示例如下:

此時我們再次執(zhí)行寫入的動作,就可以將其追加寫入文件。

file_test.write(_message)
file_test.close()

使用 a 模式 執(zhí)行 writelines 方法

借著上面演示的案例,我們定義一個列表的字符串,然后 通過 open() 函數(shù) 的 a模式,使用 writelines 方法將內(nèi)容寫入文件

import os.path


current_path = os.getcwd()

file_path = os.path.join(current_path, 'test.txt')
file_list = ['\n今天天氣不錯\n', '挺風(fēng)和日麗的\n', '我們下午沒有課\n']
file_test = open(file_path, 'a')
file_test.writelines(file_list)
file_test.close()

執(zhí)行效果如下圖:

實戰(zhàn)小案例

需求:實現(xiàn)一個可以自動創(chuàng)建 python 包 的函數(shù)

import os


def create_package(path):			# 定義一個創(chuàng)建 包 的函數(shù)
    if os.path.exists(path):		# 判斷路徑是否存在,若已經(jīng)存在,則拋出異常
        raise Exception('%s 已經(jīng)存在,不可創(chuàng)建' % path)
    else:
        os.mkdir(path)

    init_path = os.path.join(path, '__init__.py')
    file_init = open(init_path, 'w', encoding='utf-8')
    file_init.write('# coding:utf-8\n')
    file_init.close()


if __name__ == '__main__':
    current_path = os.getcwd()
    path = os.path.join(current_path, 'test_package')
    create_package(path)

執(zhí)行結(jié)果如下:

拓展:從上文腳本中,我們可以發(fā)現(xiàn)每次,執(zhí)行寫入的時候,都要寫入 \n 換行符,很是麻煩,我們可以自定義一個 open 類,從而實現(xiàn)每次我們執(zhí)行寫入操作時的自動換行。

class Open(object):
    def __init__(self, path, mode='w', is_return=True):     # 這里的 is_return 我們定義的是換行的意思,結(jié)合下文的 message 理解
        self.path = path
        self.mode = mode
        self.is_return = is_return

    def write(self, message):
        file_test = open(self.path, mode=self.mode)
        if self.is_return:      # 如果返回 Ture 則 在 message 后,增加換行符
            message = '%s\n' % message
        file_test.write(message)
        file_test.close()


if __name__ == '__main__':
    current_path = os.getcwd()
    # path = os.path.join(current_path, 'test_package')
    open_path = os.path.join(current_path, 'test_new_line.txt')
    # create_package(path)
    # create_package(open_path)
    open_test = Open(open_path)
    open_test.write('這是一段測試換行符的字符串信息')

執(zhí)行結(jié)果如下:

到此這篇關(guān)于Python學(xué)習(xí)之文件的創(chuàng)建與寫入詳解的文章就介紹到這了,更多相關(guān)Python 文件創(chuàng)建 寫入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pycharm實現(xiàn)在子類中添加一個父類沒有的屬性

    pycharm實現(xiàn)在子類中添加一個父類沒有的屬性

    這篇文章主要介紹了pycharm實現(xiàn)在子類中添加一個父類沒有的屬性,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python幾種繪制時間線圖的方法

    Python幾種繪制時間線圖的方法

    這篇文章主要介紹了Python幾種繪制時間線圖的方法,Matplotlib 作為 Python 家族最為重要的可視化工具,其基本的 API 以及繪制流程還是需要掌握的
    2022-08-08
  • Python random模塊常用方法

    Python random模塊常用方法

    這篇文章主要介紹了Python random模塊常用方法,本文羅列了最常用的方法,需要的朋友可以參考下
    2014-11-11
  • 基于Python腳本實現(xiàn)郵件報警功能

    基于Python腳本實現(xiàn)郵件報警功能

    這篇文章主要介紹了基于Python腳本實現(xiàn)郵件報警功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • python字符串切割:str.split()與re.split()的對比分析

    python字符串切割:str.split()與re.split()的對比分析

    今天小編就為大家分享一篇python字符串切割:str.split()與re.split()的對比分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法

    python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法

    本文主要介紹了python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • python socket通信編程實現(xiàn)文件上傳代碼實例

    python socket通信編程實現(xiàn)文件上傳代碼實例

    這篇文章主要介紹了python socket通信編程實現(xiàn)文件上傳代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Python利用selenium建立代理ip池訪問網(wǎng)站的全過程

    Python利用selenium建立代理ip池訪問網(wǎng)站的全過程

    selenium控制瀏覽器也是可以使用代理ip的,下面這篇文章主要給大家介紹了關(guān)于Python利用selenium建立代理ip池訪問網(wǎng)站的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • python pandas dataframe 行列選擇,切片操作方法

    python pandas dataframe 行列選擇,切片操作方法

    下面小編就為大家分享一篇python pandas dataframe 行列選擇,切片操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python 如何查看程序內(nèi)存占用情況

    Python 如何查看程序內(nèi)存占用情況

    這篇文章主要介紹了Python 如何查看程序內(nèi)存占用情況,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論