亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

open() 函數(shù)

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

用法:

open(path, mode)

參數(shù)說(shuō)明:

path:文件路徑

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

返回值:

文件對(duì)象

示例用法如下:

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

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

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

文件操作的寫入模式

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

文件對(duì)象的寫入操作方法

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

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

使用 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í),需要設(shè)置編碼格式;如果不是WIN系統(tǒng),則不需要設(shè)置編碼格式

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

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

我們繼上面演示的案例,在 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)雅的編程語(yǔ)言')
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)雅的編程語(yǔ)言,還不掉頭發(fā)')

可以看到我們針對(duì) text.txt 文件的基礎(chǔ)上,繼續(xù)演示的 w 模式 新傳入的 Python 不僅是一門優(yōu)雅的編程語(yǔ)言,還不掉頭發(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)容會(huì)報(bào)錯(cuò) ,如下圖:

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

我們先 使用 ab 模式 嘗試將 字符串 通過(guò) 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 是一種很有意思的編程語(yǔ)言')

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

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

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

此時(shí)我們?cè)俅螆?zhí)行寫入的動(dòng)作,就可以將其追加寫入文件。

file_test.write(_message)
file_test.close()

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

借著上面演示的案例,我們定義一個(gè)列表的字符串,然后 通過(guò) 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今天天氣不錯(cuò)\n', '挺風(fēng)和日麗的\n', '我們下午沒(méi)有課\n']
file_test = open(file_path, 'a')
file_test.writelines(file_list)
file_test.close()

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

實(shí)戰(zhàn)小案例

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

import os


def create_package(path):			# 定義一個(gè)創(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í)行寫入的時(shí)候,都要寫入 \n 換行符,很是麻煩,我們可以自定義一個(gè) open 類,從而實(shí)現(xiàn)每次我們執(zhí)行寫入操作時(shí)的自動(dòng)換行。

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('這是一段測(cè)試換行符的字符串信息')

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

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

相關(guān)文章

最新評(píng)論