Python 零基礎入門到實戰(四)筆記:標準庫和第三方包、模塊、檔案讀寫、捕獲例外處理、總結
- Python常用模塊
- 標準庫和第三方包
- 模塊
- 包
- 安裝、發布包
- 檔案讀寫IO操作一般方法
- txt檔案
- csv檔案
- 讀寫Excel
- 例外處理
- 1/0
- 總結:
Python常用模塊
標準庫和第三方包
import moduel
from module import XXX
import module as other_name
>>> import math
>>> math.pow(2,3)
8.0
>>> from math import pow
>>> pow(2,3)
8.0
>>> from math import *
>>> import math as sx
>>> sx.pow(2,3)
8.0 #本地庫
>>> import numpy as np
>>> import pandas as pd #第三方包
第三方包安裝: pip install package_name(^D退出層級)
來源:https://pypi.org/
pip連接超時可以使用國內的源(鏡像)例如:pypi鏡像
臨時使用:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
模塊
Python 模塊(Module),是一個 Python 檔案,以 .py 結尾,包含了 Python 物件定義和Python陳述句,
模塊讓你能夠有邏輯地組織你的 Python 代碼段,
把相關的代碼分配到一個模塊里能讓你的代碼更好用,更易懂,
模塊能定義函式,類和變數,模塊里也能包含可執行的代碼,
模塊中可加上 ,“main”
class S:
xxxx
if__ name__=="__main__":
xxxx #主函式
在執行py時候,底下陳述句會執行,在import模塊后陳述句不會執行
>>> import sys
>>> sys.path
['', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39\\DLLs', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39\\lib', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages']
以上是import時會去搜尋的路徑,也可以手動添加路徑
>>> import sys
>>>> sys.path.append('C:\Users\ASUS\Desktop\MLCode\python')
File "<stdin>", line 1
sys.path.append('C:\Users\ASUS\Desktop\MLCode\python')
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
發現出錯,原因是在windows系統當中讀取檔案路徑可以使用,但是在python字串中\有轉義的含義,需要使用些方法使得\不被解讀為轉義字符,有3種解決方案
例如在路徑前面加r,即保持字符原始值的意思,
sys.path.append(r’c:\Users\ASUS\Desktop\MLCode\python’)
或將\替換為雙反斜杠或替換為正斜杠,路徑添加成功后代碼如下
>>> sys.path.append(r'C:\Users\ASUS\Desktop\MLCode\python')
>>> sys.path
['', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39\\DLLs', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39\\lib', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39', 'C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages', 'C:\\Users\\ASUS\\Desktop\\MLCode\\python']
然后就可以import 模塊名 了
包
包是一個分層次的檔案目錄結構,它定義了一個由模塊及子包,和子包下的子包等組成的 Python 的應用環境,
簡單來說,包就是檔案夾,但該檔案夾下必須存在 __init__.py 檔案, 該檔案的內容可以為空,__init__.py 用于標識當前檔案夾是一個包,
考慮一個在 package_runoob 目錄下的 runoob1.py、runoob2.py、init.py 檔案,test.py 為測驗呼叫包的代碼,目錄結構如下:
test.py
package_runoob
|-- __init__.py
|-- runoob1.py
|-- runoob2.py
安裝、發布包
后續
檔案讀寫IO操作一般方法
txt檔案
寫入檔案:
C:\Users\ASUS>
C:\Users\ASUS>python
Python 3.9.4 (tags/v3.9.4:1f2e308, Apr 6 2021, 13:40:21) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os#引入os模塊、查看作業路徑
>>> os.getcwd()
'C:\\Users\\ASUS'#獲取路徑
>>> os.chdir(r'C:\Users\ASUS\Desktop\MLCode')#修改路徑
>>> os.getcwd()#修改后的路徑
'C:\\Users\\ASUS\\Desktop\\MLCode'
>>> f=open("fileTest.txt","w")#第一個引數是文本檔案,按照默認的作業路徑保存、第二個引數是檔案名稱,說明有寫入權限,如果本來有檔案會覆寫,若無,會新建!
>>> f.write('This is python')#
14# 字串長度#此時只是在記憶體中寫好了,并未寫到硬碟,接下來用f所參考的檔案寫入內容、
>>> f.close() #在執行完close()會保存到本地的目錄里、
>>> f=open('fileTest.txt')#打開
>>> f.read()#讀
'This is python'
>>> dir(f)
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines']
常用的檔案打開方式如下:

讀取檔案
>>> with open('fileTest.txt','a')as f:
... f.write("\n 后來寫的")
...
6
>>> f=open("fileTest.txt")
>>> for line in f:
... print(line)
...
This is python
后來寫的
>>> for line in f:
... print(line,end=' ')#數不出來是因為指標已經到最后位
...
>>> f.seek(0)#iter指標歸零
0
>>> for line in f:
... print(line,end=' ')
...
This is python
后來寫的 >>>
寫入成功

csv檔案
>>> import csv
>>> data=[['name','number'],['python',111],['java',222],['php',333]]
>>> with open('csvfile.csv','w') as f:
... writer= csv.writer(f)
... writer.writerows(data)
...
>>> f=open('csvfile.csv')
>>> reader=csv.reader(f)
>>> for row in reader:
... print(row)
...
['name', 'number']
['python', '111']
['java', '222']
['php', '333']
讀寫Excel
在這一部分中需要用到openpyxl模塊,打開cmd.exe進行安裝
pip install openpyxl
提示
Collecting openpyxl
Downloading openpyxl-3.0.7-py2.py3-none-any.whl (243 kB)
|████████████████████████████████| 243 kB 4.6 kB/s
Collecting et-xmlfile
Downloading et_xmlfile-1.0.1.tar.gz (8.4 kB)
Using legacy 'setup.py install' for et-xmlfile, since package 'wheel' is not installed.
Installing collected packages: et-xmlfile, openpyxl
Running setup.py install for et-xmlfile ... done
Successfully installed et-xmlfile-1.0.1 openpyxl-3.0.7
WARNING: You are using pip version 20.2.3; however, version 21.0.1 is available.
You should consider upgrading via the 'c:\users\asus\appdata\local\programs\python\python39\python.exe -m pip install --upgrade pip' command.
提示pip版本是20.2.3,然而版本21已經是可獲得的了、在這里需要做一個pip更新
下載速度可能會比較慢,因為服務器在境外、于是乎經過了我耐心的等待,成功了、
昨天試過都是不成功的,這個時候你可以通過國內鏡像進行下載:python -m pip install --upgrade pip -i https://pypi.douban.com/simple
C:\Users\ASUS>python -m pip install --upgrade pip
Collecting pip
Downloading pip-21.1-py3-none-any.whl (1.5 MB)
|████████████████████████████████| 1.5 MB 6.1 kB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.2.3
Uninstalling pip-20.2.3:
Successfully uninstalled pip-20.2.3
Successfully installed pip-21.1
準備作業做好了
接下來上代碼
>>> import openpyxl
>>> from openpyxl import Workbook
>>> wb=Workbook()
>>> ws=wb.active
>>> ws.title
'Sheet'
>>> ws.title='Python'
>>> ws.title
'Python'
>>> ws2=wb.create_sheet('C++')
>>> ws2
<Worksheet "C++">
>>> wb.sheetnames
['Python', 'C++']
>>> ws['E1']=111
>>> ws.cell(row=2,column=2,value=222)
<Cell 'Python'.B2>
>>> wb.save('example.xlsx')
>>> import os#看看保存到哪了
>>> os.getcwd()
'C:\\Users\\ASUS'

正如我們創建的、對sheet1,2和E1,2行2列的命名都成功了

例外處理
try/except陳述句用來檢測try陳述句塊中的錯誤,從而讓except陳述句捕獲例外資訊并處理,
代碼結構
try:
<陳述句> #運行別的代碼
except <名字>:
<陳述句> #如果在try部份引發了'name'例外
except <名字>,<資料>:
<陳述句> #如果引發了'name'例外,獲得附加的資料
else:
<陳述句> #如果沒有例外發生
1/0
如果你不想在例外發生時結束你的程式,只需在try里捕獲它,
接下來就拿1/0來舉例子,代碼如下
while(1):
try:
a=float(input('分子:'))
b=float(input('分母:'))
r=a/b
print("{0}/{1}={2}".format(a,b,r))
break
except ZeroDivisionError:
print("分母不為0,重新輸入")
except ValueError:
print("輸入數值:")
except:
print("成功")
break
結果:
分子:1
分母:2
1.0/2.0=0.5
#
分子:1
分母:0
分母不為0,重新輸入
分子:0
分母:2
0.0/2.0=0.0
總結:
基礎仍有不足,將以實際需求,應用為基準、繼續學習!
Python是一門很靈活,強大的語言、且工具庫眾多,可以用于不同領域的研究和使用、十分方便
至于爬蟲和連接MySQL的小案例較為基礎, 都是模塊的引入和使用、在此不再贅述、后續有機會再繼續寫、感謝螢屏前你的每一次閱讀!~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/280359.html
標籤:python
