日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

手机上python编程工具3和3h有区别吗_Python 高级 3

發布時間:2024/7/23 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手机上python编程工具3和3h有区别吗_Python 高级 3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.編輯器vim

目標

能夠說出vim三種工作模式

能夠寫出vim復制、剪切、粘貼、選中多行命令

yy,dd,p,數字+V

能夠寫出查找、替換命令

:/要查找的內容,n下一個,N上一個

:%s/要替換的內容/新內容/g

:10-20s/要替換的內容/新內容

<1>vim簡

vim是一個類似于Vi的著名的功能強大、高度可定制的文本編輯器

vim有三種基本工作模式:

命令模式

編輯模式

末行模式。

<2>命令行模式

任何時候,不管用戶處于何種模式,只要按一下ESC鍵,即可使Vi進入命令模式;我們在shell環境(提示符為$)下輸入啟動Vi命令,進入編輯器時,也是處于該模式下。在該模式下,用戶可以輸入各種合法的Vi命令,用于管理自己的文檔。此時從鍵盤上輸入的任何字符都被當做編輯命令來解釋,若輸入的字符是合法的Vi命令,則Vi在接受用戶命令之后完成相應的動作。但需注意的是,所輸入的命令并不在屏幕上顯示出來。若輸入的字符不是Vi的合法命令,Vi會響鈴報警。

<3>編輯模式

在命令模式下輸入插入命令i、附加命令a 、打開命令o、修改命令c、取代命令r或替換命令s都可以進入文本輸入模式。在該模式下,用戶輸入的任何字符都被Vi當做文件內容保存起來,并將其顯示在屏幕上。在文本輸入過程中,若想回到命令模式下,按鍵ESC即可。

<4>末行模式

在命令模式下,用戶按“:”鍵即可進入末行模式下,此時Vi會在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個“:”作為末行模式的提示符,等待用戶輸入命令。多數文件管理命令都是在此模式下執行的(如把編輯緩沖區的內容寫到文件中等)。末行命令執行完后,Vi自動回到命令模式。例如:

:sp newfile

則分出一個窗口編輯newfile文件。如果要從命令模式轉換到編輯模式,可以鍵入命令a或者i;如果需要從文本模式返回,則按Esc鍵即可。在命令模式下輸入“:”即可切換到末行模式,然后輸入命令。

<5>vim基礎操作

vim是從 vi 發展出來的一個文本編輯器 。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富

進入插入模式:

i: 插入光標前一個字符

I: 插入行首

a: 插入光標后一個字符

A: 插入行未

o: 向下新開一行,插入行首

O: 向上新開一行,插入行首

進入命令模式:

ESC:從插入模式或末行模式進入命令模式

移動光標:

h: 左移

j: 下移

k: 上移

l: 右移

M: 光標移動到中間行

L: 光標移動到屏幕最后一行行首

G: 移動到指定行,行號 -G

w: 向后一次移動一個字

b: 向前一次移動一個字

Ctr+d: 向下翻半屏

Ctr+u: 向上翻半屏

Ctr+f: 向下翻一屏

Ctr+b: 向上翻一屏

gg: 光標移動文件開頭

G: 光標移動到文件末尾

刪除命令:

x: 刪除光標后一個字符,相當于 Del

X: 刪除光標前一個字符,相當于 Backspace

dd: 刪除光標所在行,n dd 刪除指定的行數。也是剪切的意思,配合p粘貼使用,如果沒有粘貼就是刪除。

D: 刪除光標后本行所有內容,包含光標所在字符

d0: 刪除光標前本行所有內容,不包含光標所在字符

dw: 刪除光標開始位置的字,包含光標所在字符

撤銷命令:

u: 一步一步撤銷

Ctr-r: 反撤銷

重復命令:

.: 重復上一次操作的命令

文本行移動:

>>: 文本行右移

<<: 文本行左移

復制粘貼:

yy: 復制當前行,n yy 復制 n 行

p: 在光標所在位置向下新開辟一行,粘貼

可視模式:

v: 按字符移動,選中文本

V: 按行移動,選中文本可視模式可以配合 d, y, >>, << 實現對文本塊的刪除,復制,左右移動

替換操作:

r: 替換當前字符

R: 替換當前行光標后的字符

查找命令:

:/查找內容

n: 下一個

N: 上一個

替換命令:

把abc全部替換成123

末行模式下,將當前文件中的所有abc替換成123

:%s/abc/123/g

末行模式下,將第一行至第10行之間的abc替換成123

:1, 10s/abc/123/g

因為是范圍內替換,最后可以不用加g

小結:

%表示整個文件, 1, 10表示1到10行范圍內

s表示替換

g表示全局

<6>設置vim顯示行號

1 >臨時顯示行號

如果只是臨時顯示vim的行號,只須按ESC鍵退出編輯內容模式,輸入“:set number”后按回車鍵,就可以顯示行號了。行號顯示只是暫時的,退出vim后再次打開vim就不顯示行號了。

2>永久顯示行號

如果想讓vim永久顯示行號,則需要修改vim配置文件vimrc。如果沒有此文件可以創建一個。在啟動vim時,當前用戶根目錄下的vimrc文件會被自動讀取,因此一般在當前用戶的根目錄下創建vimrc文件,即使用下面的命令:

■ vim ~/.vimrc

■ 在打開的vimrc文件中最后一行輸入:set number ,然后保存退出。再次用vim打開文件時,就會顯示行號了。

2.Linux 命令總結

1. 啟動終端: ctr+alt+t

2. 終端字體放大: ctr+shift+'+',終端字體縮小: ctr+'-'

3. ls: 查看當前目錄下的文件信息

4. pwd: 查看目錄所在的路徑

5. touch: 創建文件

6. mkdir: 創建文件夾

7. rmdir: 刪除文件夾,提示:只能是空文件夾

8. rm: 默認刪除的是文件,如果刪除文件夾需要加上-r選項,-r:以遞歸的方式把文件夾下的所有文件信息刪除掉

9. cd:切換目錄

9.1 cd 目錄名 : 切換到指定目錄

9.2 cd .: 切換到當前目錄

9.3 cd ..: 切換到上一級目錄

9.4 cd ~: 切換到當前用戶的目錄

9.5 cd: 等價與cd ~ 切換到當前用戶的目錄

9.6 cd -: 切換到上一次目錄

10. 絕對路徑: 從根目錄算起的路徑叫做絕對路徑,比如: /home/python

11. 相對路徑: 從當前目錄算起的路徑叫做相對路徑, 比如: ./AAA ../BBB

12. 路徑的使用總結: 如果離當前目錄近使用相對路徑,如果離根目錄近使用絕對路徑,如果進入的是中間目錄建議使用絕對路徑

13. 自動補全: 兩次tab鍵

14. cp: 拷貝

14.1 cp 文件名 路徑: 把文件拷貝到指定路徑

14.2 cp 路徑/文件名 路徑: 把指定路徑的文件拷貝到指定路徑

14.3 cp 文件名 路徑/新的文件名 : 先把文件拷貝到指定目錄然后再重命名

14.4 cp 文件夾 路徑 -r: 拷貝文件夾 -r:以遞歸的方式把文件夾下的所有文件拷貝過去

15. mv: 移動(剪切)

15.1 mv 文件名 路徑: 把文件移動到指定路徑

15.2 mv 路徑/文件名 路徑: 把指定路徑的文件移動到指定路徑

15.3 mv 文件名 新的文件名: 重命名

15.4 mv 文件夾 路徑: 把文件夾移動到指定目錄,不需要加上-r

16. tree: 以目錄樹方式顯示當前文件夾信息

16.1 tree / : 以目錄樹方式顯示指定路徑的文件信息

17. 命令的格式

17.1 命令名 選項 參數, 提示:有些命令選項可以放到參數的后面,但是:scp 選項必須要放到命令名的后面

18. ls 選項

18.1 -l: 以列表的方式取顯示

18.2 -a: 顯示隱藏文件

18.3 -h: 顯示文件大小的單位

19. mkdir 選項

19.1 -p: 把依賴文件夾提取創建好,比如: mkdir 123/456/789 -p

20. rm選項

20.1 -r: 以遞歸的方式刪除文件夾里面的所有內容

20.2 -i: 顯示刪除的時候提醒信息

20.3 -v: 顯示刪除后的描述信息

20.4 -d: 刪除空目錄

20.5 -f: 如果文件或者目錄存在則刪除,否則就不刪除也不會報錯

21. cp選項

21.1 -i:拷貝文件的時候如果指定目錄有該文件需要顯示提醒信息

21.2 -v:顯示拷貝文件的路徑描述

21.3 -r:以遞歸的方式拷貝文件夾里面的所有內容

22. mv選項

22.1 -i:移動文件顯示提醒信息

22.2 -v:顯示移動后的路徑描述

23. 重定向(>,>>): 在終端顯示的內容信息重寫規定方向,保存到指定文件里面,以后查看數據是文件查看就可以了

23.1 > :如果文件不存在,那么先創建,否則會先把原有文件的數據清空然后再寫入

23.2 >> : 在原有數據的基礎上進行追加

23.3 總結: ls, cat, tree都可以使用重定向

24. gedit:文本編輯工具,可讀可編輯

25. cat: 內容在終端顯示,不能進行編輯,提示:適合查看小型文件,大型文件使用分屏方式顯示(more)

26. more:分屏顯示

26.1 f:表示下一頁

26.2 空格:表示下一頁

26.3 回車: 表示下一行

26.4 b:表示上一頁

26.5 q:退出

27. 文件合并 cat 1.txt 2.txt > 3.txt

28. 管道: 可以理解成是一個容器,存放在終端顯示的內容

28.1 總結: ls /bin | more , cat, tree, ls都是可以結合管道使用完成分屏顯示的

29. 鏈接

29.1 軟連接:可以理解成快捷方式,把原文件刪除掉通過軟鏈接無法打文件的數據, 提示:創建軟連接不會對硬鏈接數加1

29.2 硬連接: 同一個數據有多個文件名在使用,某個文件刪除掉,還可以通過其它文件名訪問這個文件的數據, 提示:創建硬鏈接硬鏈接數會加1

29.3 提示:如果創建的軟鏈接沒有和原文件在同一個目錄里面,那么需要使用絕對路徑創建軟連接

30. grep: 根據指定的內容在文件中進行查找

30.1 grep "a" 8.txt : 根據指定內容在文件中進行查找

30.2 -n:行號, -i:忽略大小寫 -v: 取反

30.3 總結: ^,$ [], . 支持的正則表達式

31. find:在指定目錄查找對應的文件

31.1 find . -name ".txt": 在當前目錄查找后綴是.txt的文件, -name根據文件名查找

31.2 find . -perm 666: 在當前目錄查找文件權限是可讀可寫的, -perm根據權限查找

31.3 總結: ? [] 支持的通配符

32. ls:支持的通配符: *,? , [], []:表示匹配任意列舉中的一個字符

33. 通配符: ? * [],起到了模糊查詢的作用

34. tar: 打包、壓縮、解包、解壓縮

34.1 打包 tar -cvf test.tar *.txt, -c: 表示要打包, -v:顯示文件打到包里面 -f:表示文檔名稱,提示-f必須放到所有選項的后面

34.2 解包 tar -xvf test.tar , -x:表示解包

34.3 打包及壓縮合并的命令:tar -zcvf test.tar.gz *.txt

34.4 解壓縮及解包合并的命令:tar -zxvf test.tar.gz ->得到對應的文件

34.5 指定解壓縮的路徑 tar -zxvf test.tar.gz -C ../BBB, -C:指定解壓縮后的路徑

34.6 tar -jcvf test.bz2 *.txt -> test.bz2

34.7 tar -jxvf test.bz2 -> 得到對應的文件

34.8 -C: 指定解壓縮的路徑: tar -jxvf test.bz2 -C ../BBB

35. zip的壓縮及解壓縮

35.1 zip test *.txt -> test.zip ,提示:壓縮包的后綴不需要指定默認是.zip

35.2 unzip test.zip -> 得到是壓縮包里面的文件

35.3 unzip -d ./123 test.zip -> 解壓到指定路徑 , -d:表示解壓的路徑

36. chmod:修改權限

36.1 -r(4):可讀 -w(2):可寫 -x(1):可執行

36.2 u:當前用戶 g: 同組用戶 o: 其它用戶 a:所有用戶

36.3 +:添加權限, -:撤銷權限 , = : 賦值權限

36.4 chmod 000 1.txt : 全部沒有權限

36.5 chmod a=- 1.txt chmod a= 1.txt : 全部沒有權限

36.6 chmod 777 1.txt chmod a=rwx 1.txt : 都權限,可讀可讀可執行

36.7 chmod 664 1.txt chmod u=rw,g=rw,o=r 1.txt 設置不同用戶不同權限

37. cp選項

37.1-a: 保留文件原有權限,-a包含-r,也就是使用-a也可以拷貝文件夾

38. which : 查看命令的路徑

39. sudo -s: 切換到管理員賬號

40. passwd:修改密碼

41. who :當前那些用戶登陸

42. whoami:當前電腦登陸的用戶是誰

43. exit:退出

44. ssh: 遠程登陸 44.1 ssh : 可以遠程登陸服務端可以通過vim修改文件

45. scp: 遠程拷貝

45.1 scp 1.txt python@192.168.107.132:/home/python/Desktop ,把本地文件拷貝到服務器端

45.2 scp -r test python@192.168.107.132:/home/python/Desktop,把本地文件夾拷貝到服務器端

45.3 scp python@192.168.107.132:/home/python/Desktop/1.txt . , 把服務端的文件拷貝的本地

45.4 scp -r python@192.168.107.132:/home/python/Desktop/test . , 把服務端的文件夾拷貝的本地

46. apt list 支持的安裝包

47. vim的使用

47.1 命令模式, 編輯模式, 末行模式, 命令模式是編輯模式和末行模式的中轉站

48. vim常用命令

命令模式下:

i:插入模式光標之前插入

I:行首插入

o:光標下一行插入

O:光標上一行插入

a:光標之后插入

A:行尾插入

j:向下移動

k:向上移動

l:向右移動

h:向左移動

gg:跳至首行

G:跳至末行,數字+G:跳至指定行

L:跳至末行

yy:復制,數字+yy:從當前行復制指定行數

dd:剪切,數字+dd:從當前行剪切指定行數 D刪除光標后本行所有內容,包含光標

p:粘貼

u:撤銷

M:跳轉至屏幕中間一行

w:向后移動一個單詞

b:向前移動一個單詞

Ctrl+d:向下翻半屏

Ctrl+u:向上翻半屏

Ctrl+f:向下翻一屏

Ctrl+b:向上翻一屏

Ctrl+r:反撤銷

r:替換當前字符

R:替換光標后的字符

x:刪除光標后一個字符

X:刪除光標前一個字符

d0:刪除光標前本行所有內容,不包含當前光標所在位置

dw:刪除光標開始位置的單詞,包含當前字符

>>:向右縮進 數字+>>:當前行開始的指定行數向右縮進

<<:向左縮進 數字+<<:當前行開始的指定行數向左縮進

v:從當前字符選擇 選擇后:y:復制 d:剪切

V:從當前行選擇? 選擇后:y:復制 d:剪切

Shift+;:進入末行模式

末行模式下

q:退出

q!:強制退出,不保存

w:保存

wq:保存并退出

x:保存并退出

/:字符串查找? n:下一個? N:上一個

%s/old/new/g:把文本中的old全部替換為new

2,10s/old/new/g:把文本中2到10行中的old替換為new

!:直接在vi中執行shell命令

3.烏班圖執行python文件

./1.py 直接執行.py文件,需要先在.py文件的首行輸入 #!/usr/bin/python3

#!后面跟python3的路徑,python3所在的路徑可以用which python3查詢

4.網絡

<1>網絡概述

什么是網絡

網絡就是指將具有獨立功能的多臺計算機通過通信線路連接起來,在網絡管理軟件及網絡通信協議下,實現資源共享和信息傳遞的虛擬平臺。

通俗理解網絡就是把雙方或者多方設備連接起來的一個工具,然后可以進行數據傳遞

學習網絡的目的

能夠編寫基于網絡通信的軟件,通過網絡把數據從一方傳遞到另外一方,完成數據的共享

通俗來說就是能夠進行網絡編程,開發網絡通信程序或者軟件。

<2>ip地址

ip地址的概念

ip地址是標識網絡中唯一的一臺設備的

ip地址的作用

通過ip地址找到網絡中唯一一臺設備,然后可以給設備發送數據

私有ip

私有ip就是局域網中使用的ip地址,國際規定有一部分ip地址是在局域網中使用的

私有ip的范圍,也就是不在公網中使用的ip地址范圍:

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255

192.168.0.0~192.168.255.255

本機ip地址

127.0.0.1表示本機ip地址; 本機域名是localhost; 通過域名可以解析一個ip地址,域名方便大家記憶某臺電腦的主機地址

<3>Linux命令(ping, ifconfig)

查看或配置網卡信息:ifconfig

mac和Linux 用 ifconfig

Windows 用 ipconfig

測試遠程主機連通性:ping

通常用ping來檢測網絡是否正常

小結

1.ping 127.0.0.1 檢查本地網卡是否正常

2.ping www.baidu.com 檢查是否能上公網

3.ping 當前局域網的ip地址 檢查是否在同一個局域網內

<4>端口

什么是端口

端口是傳輸數據的通道,好比教室的門,是數據傳輸必經之路。

如果一個程序需要收發網絡數據,那么就需要有這樣的端口

端口號

問題:一個電腦上運行著多個應用程序,都需要收發數據,如何區分給那個應用程序呢?

既然有這么多端口,操作系統為了統一管理,所以進行了編號,這就是端口號

端口號:使用唯一一個編號來標識端口, 其實就是標識端口的一個編號。

在linux系統中,端口號有65536(2的16次方)個

端口號劃分

端口號不是隨意使用的,而是按照一定的規定進行分配。

端口號分為知名端口號和動態端口號

知名端口號(Well Known Ports)

知名端口號: 系統程序使用的端口號

知名端口號是眾所周知的端口號,范圍從0到1023

80端口分配給HTTP服務

21端口分配給FTP服務

一般情況下,如果一個程序需要使用知名端口的需要有root權限

動態端口號(Dynamic Ports)

動態端口號: 程序員開發應用程序使用端口號, 之所以稱為動態端口,是因為它一般不固定分配某種服務,而是動態分配。

動態端口的范圍是從1024到65535

注冊端口:端口1024到49151

動態端口:從49152到65535

當這個程序關閉時,同時也就釋放了所占用的端口號

怎樣查看端口號 ?

用 netstat -an 查看程序所使用的端口號

lsof -i [tcp/udp]:2425 查看端口號對應的應用程序

提示: 如果端口號找不到應用程序,使用管理員權限加上sudo

可以全部用sudo lsof -i:端口號

總結:

網絡通信的流程是先通過ip地址找到網絡中的設備,再通過端口號來找到對應的端口,然后通過端口把數據傳輸給對應的應用程序

5.網絡傳輸方式-UDP

<1>UDP概念

UDP:英文全拼(User Datagram Protocol)簡稱用戶數據報協議,它是無連接的、不可靠的網絡傳輸協議

<2>UDP特點

因為udp發送數據之前不需要建立連接所以具有以下特點

無連接

資源開銷小

傳輸速度快

udp每個數據包最大是64K

<3>UDP的優缺點

優點:

傳輸速度快

不需要連接,資源開銷小

缺點:

傳輸數據不可靠,容易丟數據包

沒有流量控制,當對方沒有及時接收數據,發送方一直發送數據會導致緩沖區數據滿了,電腦出現卡死情況,所有接收方需要及時接收數據。

<4>UDP的使用場景

當對網絡通訊質量要求不高的時候,要求網絡通訊速度能盡量的快,這時就可以使用UDP

qq音視頻傳輸,微信音視頻傳輸

上課使用的共屏軟件

發送廣播消息

小結:

UDP是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快。

6.socket介紹

<1>不同電腦上的進程之間如何通信

首先通過ip地址找到網絡中對應的電腦,然后通過傳輸協議和端口號來確定這個進程(運行起來的軟件),那么數據如何傳輸需要使用socket來完成,也就是進程之間通信使用socket

注意:

所謂進程指的是:運行的程序或者軟件稱之為進程(在講解多任務編程時進行詳細講解)

所謂進程間通信指的是:運行的程序之間的數據共享

<2>什么是socket

socket(簡稱 套接字) 是進程間通信一個工具,它能實現把數據從一方傳輸到另外一方,完成不同電腦上進程之間的通信, 它好比數據的搬運工。

<3>socket使用場景

不夸張來說,只要跟網絡相關的應用程序或者軟件都使用到了socket

小結:

socket就是完成不同電腦上進程之間通信的一個工具,負責進程之間數據的傳輸

7.udp網絡程序-發送、接收數據

<1>udp網絡程序流程

創建一個基于udp的網絡程序流程很簡單,具體步驟如下:

創建客戶端套接字

發送/接收數據

關閉套接字

總結: 網絡通信的流程

1. 對方的ip地址

2. 應用程序的端口號

3. 數據的傳輸協議(udp/tcp)

4. 使用socket收發數據

<2>創建socket

在 Python 中 使用socket 模塊的函數 socket 就可以完成:

import socket

socket.socket(AddressFamily, Type)

說明:

函數 socket.socket 創建一個 socket,該函數帶有兩個參數:

Address Family:IP地址類型; AF_INET表示ipv4類型、AF_INET6表示ipv6類型; Type:套接字類型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 協議)或者 SOCK_DGRAM(數據報套接字,主要用于 UDP 協議)

創建一個udp socket(udp套接字)

import socket

# 創建udp的套接字

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# ...這里是使用套接字的功能(省略)...

# 不用的時候,關閉套接字

s.close()

說明

套接字使用流程 與 文件的使用流程很類似 創建套接字 使用套接字收/發數據 關閉套接字

<3>發送數據sendto()

代碼如下:

import socket

# 1. 創建udp套接字

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 2. 準備接收方的地址

# '192.168.1.103'表示目的ip地址

# 8080表示目的端口

dest_addr = ('192.168.1.103', 8080)? # 注意 是元組,ip是字符串,端口是數字

# 3. 從鍵盤獲取數據

send_data = input("請輸入要發送的數據:")

# 4. 發送數據到指定的電腦上的指定程序中

udp_socket.sendto(send_data.encode('utf-8'), dest_addr)

# 5. 關閉套接字

udp_socket.close()

<4>發送、接收數據

import socket

# 1. 創建udp套接字

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 2. 準備接收方的地址

dest_addr = ('192.168.236.129', 8080)

# 3. 從鍵盤獲取數據

send_data = input("請輸入要發送的數據:")

# 4. 發送數據到指定的電腦上

udp_socket.sendto(send_data.encode('utf-8'), dest_addr)

# 5. 等待接收對方發送的數據

recv_data = udp_socket.recvfrom(1024)? # 1024表示本次接收的最大字節數

# 6. 顯示對方發送的數據

# 接收到的數據recv_data是一個元組

# 第1個元素是對方發送的數據

# 第2個元素是對方的ip和端口

print(recv_data[0].decode('gbk'))

print(recv_data[1])

# 7. 關閉套接字

udp_socket.close()

8.數據編碼和解碼

編碼和解碼操作

str->bytes:encode編碼

bytes->str:decode解碼

字符串通過編碼成為字節碼,字節碼通過解碼成為字符串。

其中decode()與encode()方法可以接受參數,其聲明分別為:

bytes.decode(encoding="utf-8", errors="strict")

str.encode(encoding="utf-8", errors="strict")

其中的encoding是指在解碼編碼過程中使用的編碼格式,errors是指錯誤的處理方案。

注意:

strict:表示嚴格按照指定編解碼方式進行編碼和解碼,如果編解碼不成功則崩潰

ignore:表示忽略編解碼不成功的字符,如果編解碼不成功程序不會崩潰

9.udp綁定端口號

<1>綁定信息

一般情況下,在一臺電腦上運行的網絡程序有很多,為了不與其他的網絡程序占用同一個端口號,往往在編程中,udp的端口號一般不綁定

但如果需要做成一個服務器端的程序的話,是需要綁定的

一般服務性的程序,往往需要一個固定的端口號,這就是所謂的端口號綁定

<2>綁定示例

#coding=utf-8

from socket import *

# 1. 創建套接字

udp_socket = socket(AF_INET, SOCK_DGRAM)

# 2. 綁定本地的相關信息,如果一個網絡程序不綁定,則系統會隨機分配

#? ip地址和端口號,ip一般不用寫,表示本機的任何一個ip

local_addr = ('', 7788)

udp_socket.bind(local_addr)

# 3. 等待接收對方發送的數據

recv_data = udp_socket.recvfrom(1024) #? 1024表示本次接收的最大字節數

# 4. 顯示接收到的數據

print(recv_data[0].decode('gbk'))

# 5. 關閉套接字

udp_socket.close()

總結

一個udp網絡程序,不綁定端口號,此時操作系統會隨機分配一個端口號,如果綁定端口號,每次啟動程序端口號不變。

10.UDP發送廣播消息

參考代碼

import socket

if __name__ == '__main__':

# 創建udpsocket

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 設置socket的選項,允許發送廣播消息

udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True)

# 發送廣播消息

udp_socket.sendto("大家好,我叫小郭同學,多多關照!".encode("gbk"), ("255.255.255.255", 9090))

# 關閉socket

udp_socket.close()

總結

廣播地址最常用的是255.255.255.255 通用的廣播地址,不區分網段

192.168.14.255: 局域網內的廣播地址

11.udp聊天器

目標

能夠寫出udp聊天器功能程序

說明

在一個電腦中編寫1個程序,有2個功能

1.獲取鍵盤數據,并將其發送給對方

2.接收數據并顯示

選擇以上的2個功能調用

參考代碼

import socket

def send_msg(udp_socket):

"""獲取鍵盤數據,并將其發送給對方"""

# 1. 從鍵盤輸入數據

msg = input("\n請輸入要發送的數據:")

# 2. 輸入對方的ip地址

dest_ip = input("\n請輸入對方的ip地址:")

# 3. 輸入對方的port

dest_port = int(input("\n請輸入對方的port:"))

# 4. 發送數據

udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port))

def recv_msg(udp_socket):

"""接收數據并顯示"""

# 1. 接收數據

recv_msg = udp_socket.recvfrom(1024)

# 2. 解碼

recv_ip = recv_msg[1]

recv_msg = recv_msg[0].decode("utf-8")

# 3. 顯示接收到的數據

print(">>>%s:%s" % (str(recv_ip), recv_msg))

def main():

# 1. 創建套接字

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 2. 綁定本地信息

udp_socket.bind(("", 7890))

while True:

# 3. 選擇功能

print("="*30)

print("1:發送消息")

print("2:接收消息")

print("="*30)

op_num = input("請輸入要操作的功能序號:")

# 4. 根據選擇調用相應的函數

if op_num == "1":

send_msg(udp_socket)

elif op_num == "2":

recv_msg(udp_socket)

else:

print("輸入有誤,請重新輸入...")

if __name__ == "__main__":

main()

總結

以上是生活随笔為你收集整理的手机上python编程工具3和3h有区别吗_Python 高级 3的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。