溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python文件操作和數(shù)據(jù)格式實(shí)例分析

發(fā)布時(shí)間:2022-05-27 11:33:30 來源:億速云 閱讀:157 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Python文件操作和數(shù)據(jù)格式實(shí)例分析”,在日常操作中,相信很多人在Python文件操作和數(shù)據(jù)格式實(shí)例分析問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Python文件操作和數(shù)據(jù)格式實(shí)例分析”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

    一、文件操作

    前言:

    什么是計(jì)算機(jī)的流?

    "流"指的是在不同的輸入/輸出等設(shè)備(鍵盤、內(nèi)存、顯示器、音響等)之間進(jìn)行傳遞數(shù)據(jù)。

    例如:在Python中使用input()函數(shù),就會(huì)產(chǎn)生數(shù)據(jù)經(jīng)過鍵盤流輸入到存儲(chǔ)器。

    print() 就會(huì)有數(shù)據(jù)從存儲(chǔ)器中流出到屏幕。所以流實(shí)際上就是一個(gè)字節(jié)序列。

    就如同管道中的水 “流來流去”;

    1、文件的基本操作

    Python中可以通過內(nèi)置函數(shù)open()打開文件 函數(shù)定義格式如下:
    open(file,mode,buffering)

    參數(shù)說明:

    • file : 表示文件的路徑

    • mode : 文件打開的模式

    • buffering : 設(shè)置訪問文件的緩沖方式,若設(shè)置

    • 0 : 表示非緩沖方式

    • 1 : 每次緩沖衣阿華那個(gè)世俗據(jù)

    • 大于1 : 表示使用給定值作為緩沖區(qū)的大小

    文件打開模式

    打開模式含義說明
    r/rb只讀模式以只讀的方式打開文本文件/二進(jìn)制文件,如果文件不存在或找不到,open()調(diào)用失敗
    w/wb只寫模式以只寫的方式打開文本文件/二進(jìn)制文件,若文件不存在,則創(chuàng)建文件;文件已存在 ,清空文件。
    a/ab追加模式以只寫的方式打開文本文件/二進(jìn)制文件,只允許在文件末尾追加數(shù)據(jù),若文件不存在創(chuàng)建文件
    r+/rb+讀取模式以讀/寫的方式打開文本文件/二進(jìn)制文件,如果文件不存在,open()調(diào)用失敗
    w+/wb+寫入模式以讀/寫的方式打開文本文件/二進(jìn)制文件**,如果文件存在,則清空文件**
    a+/ab+追加模式以讀/寫的方式打開文本文件/二進(jìn)制文件,只允許在文件末尾添加數(shù)據(jù),若文件不存在,則創(chuàng)建文件。

    ???? 到了寫代碼環(huán)節(jié),兄弟們操練起來。耍 ! 耍 ! 整起 !

    '''
     演示 : Python中內(nèi)置函數(shù)open() 打開文件
     文件的操作屬于IO操作 記得釋放資源
    '''
    file1 = open('a.txt') #只讀模式打開文件a.txt 若文件不存在,則報(bào)異常FileNotFoundError
    file2 = open('b.txt','w') #只寫模式打開文件b.txt 文件不存在則創(chuàng)建 文件存在則覆蓋
    file3 = open('c.txt','w+') #讀寫方式打開 文件不存在則創(chuàng)建 文件存在則覆蓋
    
    #釋放資源
    file3.close()
    file2.close()
    file1.close()

    ???? 每次使用文件都得調(diào)用open()和close(),很是麻煩,若打開和關(guān)閉的操作次數(shù)較多,容易忘記close()次操作,就會(huì)造成資源的浪費(fèi)。為此Python引入了 with語句實(shí)現(xiàn)close()方法的自動(dòng)調(diào)用。

    定義格式如下:

    with open('a.txt') as file:
    	代碼段

    2、讀文件

    常用的方法

    方法描述
    read()從指定文件中讀取指定字節(jié)的數(shù)據(jù)
    readline()從指定文件中讀取一行數(shù)據(jù)
    readlines()從指定文件中的數(shù)據(jù)一次讀出,并將每一行視為一個(gè)元素,存儲(chǔ)到列表中。

    ???? 到了寫代碼環(huán)節(jié),兄弟們操練起來。耍 ! 耍 ! 整起 !

    file = open('a.txt','r')
    
    #讀文件
    #str_ = file.read(5) # 讀取五個(gè)字符
    #print(str_)
    
    #readline
    # str2 = file.readline()
    # print(str2) # 第1次讀取 讀取第一行
    # str3 = file.readline()
    # print(str3) # 第二次讀取 讀取第二行
    
    #readliness
    str4 = file.readlines()
    print(str4) # 返回的是一個(gè)列表
    
    file.close()

    3、寫文件

    常用的方法

    方法描述
    write()方法中的參數(shù)str表示要寫入文件的字符串
    #1.打開文件
    file = open('b.txt','w+') #以讀寫方式打開文件
    
    #2.寫入數(shù)據(jù)
    file.write("Hello \nWorld")
    
    #3.釋放資源
    file.close()
    
    """
    問題:
        有的開發(fā)環(huán)境可能搭配在緩沖設(shè)備當(dāng)中 所以調(diào)用write()方法可能出現(xiàn)數(shù)據(jù)未寫入
    解決:
        這里介紹三種方式:
                1.修改open函數(shù)中的buffering參數(shù)
                2.刷新緩沖區(qū)
                3.釋放資源
    """
    #1.修改open函數(shù)中的buffering參數(shù)
    # file2 = open('demo.txt','w+',1)  # 設(shè)置為1 表示每次緩沖一行數(shù)據(jù)
    # file2.write("Hello \nWorld")
    
    #2.刷新緩沖區(qū)
    # file3 = open('demo.txt','w+',encoding="utf-8")
    # file3.write("你好 \n世界") #寫入中文會(huì)亂碼 這個(gè)時(shí)候指定編碼
    # file3.flush() #默認(rèn)情況下,緩沖區(qū)堆積滿了才會(huì)自動(dòng)刷新,手動(dòng)調(diào)用緩沖區(qū)將會(huì)被立即清空,將數(shù)據(jù)寫入到文件
    
    #3.關(guān)閉文件
    with open('demo.txt','w+',encoding="utf-8") as file4: #with open的方式將自動(dòng)關(guān)閉文件
        file4.write("嗨嗨")
    文件讀寫位置操作
    """
    文件讀寫位置:
        Python中提供了獲取文件讀寫位置以及修改讀寫位置的方法,以實(shí)現(xiàn)位置隨機(jī)讀寫
        介紹一系列的方法:
            tell() 獲取文件當(dāng)前的讀寫位置
            seek(offset,from) 控制文件的讀寫位置
                參數(shù)解釋:
                    offset : 偏移量 即讀寫位置需要移動(dòng)的字節(jié)數(shù)
                    from : 指定讀寫位置   該參數(shù)的賦值分別為 0 1 2
                        0 : 從文件開頭
                        1 : 表示使用當(dāng)前讀寫位置
                        2 : 文件末尾
    """
    #演示上述
    # with open('demo.txt','r+',encoding='utf-8') as file:
    #     location = file.tell()
    #     print(location)
    #     str1 = file.read(5)
    #     print(str1)
    
    file2 = open('a.txt',encoding='utf-8')
    file2.seek(5,0) #文件開頭進(jìn)行偏移
    
    #若打開的是文本文件 seek方法只允許相對(duì)于文件開頭移動(dòng)位置 form參數(shù)為1 2時(shí)將報(bào)錯(cuò)
    # file2.seek(4,1) #io.UnsupportedOperation: can't do nonzero cur-relative seeks
    
    #若要進(jìn)行讀寫位置或文件末尾進(jìn)行位移操作 要以二進(jìn)制的形式打開文件
    file3 = open("a.txt",'rb')
    num3 = file3.seek(3,2) #16
    print(num3)
    file3.close()

    4.os模塊的使用

    除了Python內(nèi)置函數(shù)外,os模塊中定義了文件操作相關(guān)的函數(shù),包括了刪除、創(chuàng)建、重命名等文件。使用之前先導(dǎo)入

    import os

    os模塊
    import os #1.文件重命名 remove(oldName,newName) # os.rename('a.txt',
            'new.txt') #2.創(chuàng)建/刪除文件夾 # os.mkdir('create_dir')# 默認(rèn)路徑下創(chuàng)建目錄 注意:
        目錄不能重名!! 否則將創(chuàng)建失敗?。?!# os.rmdir('create_dir') #3.刪除文件 # os.remove(
            'b.txt') #4.獲取當(dāng)前目錄 str = os.getcwd() print(str) #5.獲取目錄列表 list = os
        .listdir("./")#. / 表示當(dāng)前目錄下 print(list)

    5.文件的迭代

    """
    什么是迭代?
        迭代就是一個(gè)過程的多次重復(fù),Python中實(shí)現(xiàn)了__iter__()方法意味著對(duì)象都是可迭代對(duì)象(字典 序列、文件等等)
    """
    file_name = input("請(qǐng)輸入文件名")
    file = open(file_name,encoding="utf-8")
    for f in file:
        print(f,end=" ")
    file.close()

    運(yùn)行效果
    Python文件操作和數(shù)據(jù)格式實(shí)例分析

    二、JSON

    什么是JSON
    JSON簡(jiǎn)介:JSON的全稱為JavaScript Object Nation(JavaScript 對(duì)象表示語法),
    基于 ECMAScript,存放的是的類似于鍵值對(duì),本質(zhì)上來說是javascript的數(shù)據(jù)類型,是一種輕量級(jí)的數(shù)據(jù)交互格式
    Python中提供對(duì)Json的支持
    dumps() 將Python對(duì)象 --> JSON字符串
    loads() JSON --> 對(duì)象

    Python對(duì)象JSON對(duì)象
    dictobject
    list, tuplearray
    str, unicodestring
    int, long, floatnumber
    Truetrue
    Falsefalse
    Nonenull
    """
    什么是JSON
        JSON簡(jiǎn)介:JSON的全稱為JavaScript Object Nation(JavaScript 對(duì)象表示語法),
        基于 ECMAScript,存放的是的類似于鍵值對(duì),本質(zhì)上來說是javascript的數(shù)據(jù)類型,是一種輕量級(jí)的數(shù)據(jù)交互格式
        Python中提供對(duì)Json的支持
            dumps() 將Python對(duì)象 --> JSON字符串
            loads() JSON --> 對(duì)象
    
    """
    #導(dǎo)入json模塊
    import json
    #json格式數(shù)據(jù)
    strList="[1,2,3,4]" #json數(shù)組
    strDict='{"price":38.6,"author":"佚名"}'
    print(type(strList)) #<class 'str'>
    #json數(shù)組-->python列表
    p_list=json.loads(strList)
    print(p_list) #<class 'str'>
    print(type(p_list),len(p_list)) #<class 'list'> 4
    
    #json對(duì)象-->python字典
    p_dict = json.loads(strDict)
    print(p_dict,type(p_dict)) #<class 'dict'>
    print('-'*60)
    #json格式數(shù)據(jù)
    listStr=[1,2,3,4] #python列表
    tupleStr=(1,2,3,4)#元組
    dictStr={"price":38.6,"author":"佚名"}
    
    #python列表-->json字符串(數(shù)組)
    list1 = json.dumps(listStr)
    print(list1,type(list1)) #<class 'str'>
    
    #python元組-->json數(shù)組
    tuple1 = json.dumps(tupleStr)
    print(tuple1,type(tuple1)) #<class 'str'>
    
    #python字典-->json對(duì)象
    dict1 = json.dumps(dictStr)
    print(dict1) #{"price": 38.6, "author": "\u4f5a\u540d"} 默認(rèn)使用acsii碼
    print(type(dict1)) #<class 'str'>
    
    dict2 = json.dumps(dictStr,ensure_ascii=False)
    print(dict2)

    到此,關(guān)于“Python文件操作和數(shù)據(jù)格式實(shí)例分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI