文件操作

return

1.函數(shù)的返回值
a.return后面的值,如果沒有return就是None
b.函數(shù)調(diào)用表達(dá)式的值
2.return關(guān)鍵字
a.返回值
b.結(jié)束函數(shù)
3.函數(shù)調(diào)用過程
a.先回到函數(shù)聲明的地方
b.用實參給形參賦值(傳參)
c.執(zhí)行函數(shù)體
d.執(zhí)行完函數(shù)體,就將返回值返回給函數(shù)調(diào)用者(函數(shù)調(diào)用表達(dá)式)
e.回到函數(shù)調(diào)用的位置,繼續(xù)往下執(zhí)行

模塊

1.一個.py文件就是一個模塊
2.import 可以通過import關(guān)鍵字導(dǎo)入其他的模塊
import 模塊名(.py文件名)
直接導(dǎo)入模塊的時候,相當(dāng)于將被導(dǎo)入模塊內(nèi)的內(nèi)容粘貼到了import的位置
3.怎樣使用模塊中的內(nèi)容?什么內(nèi)容是可以用的。
import 模塊名
模塊名.的方式去使用模塊中的內(nèi)容
在模塊中聲明全局變量可以使用(普通變量,函數(shù),類)
4.form 模塊1 import 內(nèi)容1,內(nèi)容2 ···
使用內(nèi)容的時候,不用再被導(dǎo)入的變量或者函數(shù)或者類前加模塊名

from test10 import func1
func1()
結(jié)果:10
ok

5.阻止被導(dǎo)入的模塊中的不必要的代碼被粘貼到當(dāng)前模塊,一般情況下,除了函數(shù)的聲明和類的聲明以外,其他的代碼都放在這個if里面
--name-- 是每個模塊自帶的一個屬性,是用來保存當(dāng)前這個模塊的名字的
但是當(dāng)正在執(zhí)行的時候,這個屬性的值是固定的'--main--'

#在這兒寫當(dāng)前模塊中不需要被其他模塊導(dǎo)入和粘貼的代碼
if __name__=='--main--':
#這個里面的代碼不會被其他模塊使用
    pass

6.使用as模塊重命名
import 模塊名 as 新的名字
from 模塊名 import 函數(shù)名 as 新的函數(shù)名

form random import randint as my_rand
print(my_rand(1,2))

基本文件操作

所有文件操作流程:
打開文件-->操作文件-->(讀/寫)-->關(guān)閉文件
打開文件:open(文件路徑,打開的方式,編碼方式)
文件路徑(必填)-->決定打開那個文件
打開方式(默認(rèn)值是'r')-->決定打開文件后進(jìn)行什么樣的操作
'r'-讀操作(讀出來的是字符串)
'rb'/'br'-讀操作(讀出來的數(shù)據(jù)是二進(jìn)制)
'w'-寫操作(可以將文本數(shù)據(jù)寫入文本中)
'wb'/'bw'-寫操作(將二進(jìn)制數(shù)據(jù)寫入文本中)
'a'-寫操作(追加)
編碼方式-->主要針對文本文件的讀寫(不同的操作系統(tǒng)默認(rèn)的文本編碼方式不同,windows-->gbk,mac-utf-8)
1.文本文件讀寫
a.放到工程外面的文件,寫絕對路徑(文件在磁盤里的位置)
b.將文件放到工程目錄下的某個位置,寫相對路徑(相對于工程項目) ./相對路徑 或者 ../相對路徑
當(dāng)py文件直接放在工程目錄下,想要使用open打開工程中的其他文件使用'./'
當(dāng)py文件直接放在工程目錄的子目錄下,想要使用open打開工程中的其他文件使用'../'
例如:

open('./test1.txt')
open('./files/test2.txt')
1.打開文件
#打開文件,返回文件句柄(文件代言人)
f=open('./test1.txt','r',encoding='utf-8')
2.讀文件(獲取文件的內(nèi)容)
#文件.read():獲取文件內(nèi)容,并返回
#read(n)-->n 設(shè)置讀的長度
f.read()
content=f.read()
print(content)
3.#關(guān)閉文件
f.close()

3.文本文件的寫操作
1.打開文件
注意:以讀的方式打開文件,如果文件不存在,會報錯FileNotFindError
以寫的方式打開文件,如果這個文件不存在,就會創(chuàng)建這個文件

#打開文件
#'w'在寫的時候會清空文件中原來的內(nèi)容,然后再往里面寫數(shù)據(jù)
#'a'在原文件的內(nèi)容最后添加新的數(shù)據(jù)
f=open('./test1.txt','w',encoding='utf-8')
#寫操作
f.write('疑是地上霜')
#關(guān)閉文件
f.close()

4.二進(jìn)制文件的讀寫操作
音頻,視頻,圖片文件,都是二進(jìn)制文件

f=open('./day06/Teenager.jpg','rb')
#讀文件
image_data=f.read
#bytes:python中二進(jìn)制數(shù)據(jù)對應(yīng)的數(shù)據(jù)類型
print(image_data)
#關(guān)閉文件
f.close()

二進(jìn)制文件的寫操作

f=open('./Teenager.jpg','rb')
#讀文件
image_data=f.read
#bytes:python中二進(jìn)制數(shù)據(jù)對應(yīng)的數(shù)據(jù)類型
print(image_data)
#關(guān)閉文件
f.close()

f=open('./new.jpg','wb')
f.write(image_data)
f.close()

4.通過關(guān)鍵字去打開文件
with open() as 文件變量名:
文件操作
文件操作結(jié)束后會自動去關(guān)閉文件

json文件

json文件,就是文件后綴是.json文件。內(nèi)容必須是json格式的內(nèi)容
json格式:
1.內(nèi)容是字符串
2.最外層是字典,字典里面就必須是鍵值對
3.最外層是數(shù)組(列表 ),數(shù)組里面內(nèi)容必須是數(shù)組

# json是python中內(nèi)置的一個模塊,專門用來處理json數(shù)據(jù)的
import json

if __name__ == '__main__':
    """1.json文件的讀操作"""
    # 打開json文件
    with open('./files/test.json', 'r', encoding='utf-8') as f:
        # 直接使用read()去讀,獲取到的是字符串?dāng)?shù)據(jù),包含了json文件中的所有的內(nèi)容(包括注釋部分)
        # conten = f.read()
        # print(conten, type(conten))
        """
        load(文件對象): 獲取指定json文件中的內(nèi)容,返回值的類型是json文件最外層的對應(yīng)的數(shù)據(jù)類型
        dict ---> dict
        array ---> list
        string ---> str
        number ---> int/float
        true/flase --> True/Flase
        null ---> None
        """
        content = json.load(f)
        print(content, type(content), content['成績'][1])


    """2.json文件的寫操作"""
    # 打開文件
    with open('./files/new.json', 'w', encoding='utf-8') as f:
        # 寫數(shù)據(jù)
        """
        dump(寫的內(nèi)容, 文件對象)
        """
        # w_content = 'abc'
        w_content = [
            {'name': 'a1', 'age': 18},
            {'name': 'a2', 'age': 20}
        ]
        json.dump(w_content, f)


    """
    3.json模塊的其他操作
    loads(字符串,編碼方式) ---> 將指定的字符串(json字符串),轉(zhuǎn)化成json數(shù)據(jù)
    將字符串轉(zhuǎn)換成字典\將字符串轉(zhuǎn)換成列表
    """
    # {"a": true, "b": 2}
    #
    content = json.loads('["a",100, false,{"a":1, "abc":"100"}]', encoding='utf-8')
    print(content, type(content))

    """
    dumps(對象)
    將對象轉(zhuǎn)換成json字符串
    字典/列表轉(zhuǎn)換成json字符串
    """
    content = json.dumps(['aaa', 1, True])
    # content = '["aaa", 1, true]'
    content2 = str(['aaa',1, True])
    # content2 = '['aaa', 1, True]'
    print(content,content2, type(content))

異常捕獲

出現(xiàn)異常(錯誤)不想讓程序崩潰,才可以進(jìn)行異常捕獲
try:
需要捕獲異常的代碼
except:
出現(xiàn)異常會執(zhí)行的代碼

try:
需要捕獲異常的代碼
except 錯誤類型:
捕獲到指定的錯誤類型,才執(zhí)行的代碼


if __name__ == '__main__':
    try:
        with open('./aaaa.txt') as ff:
            print('打開成功')
    except FileNotFoundError:
        print('===')
        open('./aaa.txt','w')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容