day9-模塊的使用與文件相關(guān)操作

一、模塊管理函數(shù)和類

1.什么模塊:一個.py文件就是一個模塊

2.import:可以通過import關(guān)鍵字導(dǎo)入其他的模塊

import 模塊名(.py文件名)

直接導(dǎo)入模塊的時候,相當(dāng)于把被導(dǎo)入模塊里面的內(nèi)容粘貼到了import的位置

3.怎么使用模塊中的內(nèi)容?什么內(nèi)容是可以使用的

import 模塊名
模塊名.的方式去使用模塊的內(nèi)容
在模塊中聲明全局變量都可以使用(普通變量、函數(shù)、類)

4.from 模塊 import 內(nèi)容1,內(nèi)容2... ---->導(dǎo)入模塊中指定內(nèi)容

使用內(nèi)容的時候,不要在被導(dǎo)入的變量或者函數(shù)或者類前加模塊名

5.阻止被導(dǎo)入的模塊中的不必要的代碼被粘貼到當(dāng)前模塊

一般情況下,除了函數(shù)的聲明和類的聲明以外,其他的代碼都放到這個if里面

name:是每個模塊自帶的一個屬性,是用來保存當(dāng)前這個模塊的名字的
但是當(dāng)正在執(zhí)行當(dāng)前模塊時,這個屬性的值是固定的'main'

# import other
from other import value
print(__name__)
# print('==',other.__name__)
if __name__ == '__main__':
    #這個里面的代碼不會被其模塊使用
    print('一行白鷺上青天')

另一模塊other

value = print('抓周樹人跟我魯迅有什么關(guān)系')




#在這寫當(dāng)前模塊中不需要被其他模塊導(dǎo)入和粘貼的代碼

if __name__ == '__main__':
    #這個里面的d代碼不會被其他模塊使用
    value2 = print('少小離家老大回')


結(jié)果

抓周樹人跟我魯迅有什么關(guān)系
__main__
少小離家老大回

6.還用as重命名

import 模塊名 as 新的名字
from 模塊名 import 函數(shù)名 as 新的函數(shù)名

import  math as my_math
print(my_math.pi)
from random import randint as my_rand
print(my_rand(1,10))

結(jié)果

3.141592653589793
9

練習(xí):使用有個模塊用來管理和形狀相關(guān)的功能。求兩個點之間的距離,求圓的周長,求圓的面積,求矩陣的周長和面積

from math_way  import  func1
func1(1,3)
from math_way  import  func2
func2(1,2)

另一個模塊math_way

def func1(a,b):
    print(a+b)


def func2(a,b):
  print('你好世界')


def func3():
    pass

def func4():
    pass

def func5():
    pass
def func6():
    pass

結(jié)果


4
你好世界

二、基本文件操作

(所有)文件操作流程:打開文件-->操作文件(讀/寫)--->關(guān)閉文件

打開文件:open(文件路徑,打開方式,編碼方式)
文件路徑(必寫)--->決定打開哪個文件
打開方式(默認(rèn)值是'r')--->決定打開文件后是進行什么樣的操作

  • 'r'-->讀操作(讀出來是字符串)
  • 'rb'/'br'--讀操作(讀出來的數(shù)據(jù)是二進制)
  • 'w'--寫操作(可以將文本數(shù)據(jù)寫入文件中)
  • 'wb'/'bw'-寫操作(可以將二進制數(shù)據(jù)寫入文件中)
  • 'a'-寫操作(追加)

編碼方式--->主要針對文本文件的讀寫(不同的操作系統(tǒng)默認(rèn)的文本文件編碼方式不同)
windows->gbk,mac->uf-8

2,文本文件讀操作

a.放在過程外面的文件,寫絕對路徑

open('D:\中一\新建文本文檔.txt')

(推薦)
b.將文件放到過程目錄下的某個位置,寫相對路徑(相對于過程目錄):./相對路徑 或者../相對路徑
當(dāng)py文件直接放在程工目錄下,想要使用open打開工程中的其他文件使用'./'
當(dāng)py文件在工程目錄的子目錄下面,想要使用open打開工程中的其他文件使用'../'

open('./test.txt')

1.打開文件

#打開一個文件,返回文件句柄(文件代言人)
fo = open('./test.txt','r',encoding='utf-8')

2.讀文件(獲取文件內(nèi)容)

文件名.read():獲取文件內(nèi)容并且返回

read(n)-->n,設(shè)置讀的長度
content = fo.read()
print(content)

3.關(guān)閉文件

fo.close()

3.文本文件的寫操作

1).打開文件

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

  • 'w':在寫的時候回清空文件中原來的內(nèi)容,然后再往里面寫數(shù)據(jù)
  • 'a':在源文件內(nèi)容的最后添加新的數(shù)據(jù)
fo1 = open('./test.txt','w',encoding='utf-8')
# print(type(fo1))
fo1.write('疑是銀河落九天')
#3.關(guān)閉文件
fo1.close()

4.二進制文件的讀寫操作

音頻、視頻、圖片文件都是二進制文件

 fo2 = open('./venv/photo.jpg','rb')
 image = fo2.read()
 #bytes:python中二進制數(shù)據(jù)對應(yīng)類型
 print(image)

 fo2.close()
"""二進制文件的寫操作"""
fo3 = open('./venv/photo1.jpg','wb')
fo3.write(image)
fo3.close()

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

#讀
with open('./venv/photo.jpg','rb') as f:
    mp4_data = f.read()
print(mp4_data)
   #寫
with open('./venv/photo.jpg','wb') as f:
    mp4_data1 = f.write(mp4_data)
print(mp4_data1)

三、json文件

數(shù)據(jù)本地化:將數(shù)據(jù)保存到本地文件中
json文件(文本),就是文件后綴是.json的文件。內(nèi)容必須是json格式的內(nèi)容

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

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

import json
####1.json文件的讀操作

打開json文件
with open('./test.json','r',encoding='utf-8') as f:
#直接使用read()去讀,獲取到的是字符串,包含了json文件的所有的內(nèi)容(包括注釋)
# content = f.read()
# print(content)

    load(文件對象):獲取指定json文件中的內(nèi)容
    dict -->dict
    array-->list
    string-->str
    number-->int/float
    true/false-->True/False
    null-->None
    
  
    content = json.load(f)
    print(content,type(content))
    print(content["成績"][1])

####2.json文件的寫操作
  with open('./new.test.json','w',encoding='utf-8') as f:
        #寫數(shù)據(jù)
        """dump(寫的內(nèi)容,文件對象)"""
        w_content = 'abc'
        json.dump(w_content,f)

3.json模塊的其他操作

將字符串轉(zhuǎn)換成字典、將字符串轉(zhuǎn)化成列表
content = json.loads('"abc,false"',encoding='utf-8')
print(content,type(content))
dumps(對象)
將對象轉(zhuǎn)換成json字符串
字典/列表轉(zhuǎn)換成json字符串
content = json.dumps(['aaa',1,True])
content2 = str(['aaa',1,True])
print(content,content2,type(content))

四、異常捕獲

出現(xiàn)異常(錯誤)不想讓程序崩潰,就可以進行異常捕獲
第一種

try:
    需要捕獲異常的代碼
eexcept:
    出現(xiàn)異常會執(zhí)行的代碼

第二種

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

if __name__ == '__main__':
    try:
        with open('./aaa.txt') as ff:
            print('打開成功')
    except FileNotFoundError:
        open('./aaa.txt','w')

建立一個名為aaa.txt的文本文檔,且打印出

打開成功
最后編輯于
?著作權(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)容

  • No matter how difficult it is, you should be patient with...
    西畔閱讀 156評論 0 0
  • 我愛祖國的丁香 ——向紀(jì)檢人員致敬 〔作者〕羅永忠 我愛祖國的丁香 我愛她寧靜高潔 我愛...
    老羅xt閱讀 734評論 1 3
  • 養(yǎng)了這些小可愛有兩個月了吧,都說多肉不愛長,但我的這幾個我怎么覺得每一天都有變化,這不,有一個翅膀硬了,想要自己獨...
    九日余光閱讀 260評論 0 0
  • 指針&MachO文件 指針 指針自增、自減的結(jié)果,其實就是指針指向的數(shù)據(jù)類型寬度決定的! 指針加上或減去一個整數(shù)的...
    泰克2008閱讀 209評論 0 0

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