---
# System prepended metadata

title: PYTHON 筆記(下)

---

# PYTHON 筆記(下)
第八章到第十章的濃縮

## 第八章(類別)
跟JAVA的結構一樣
### 類別
```
class f():
    def __init__(self,name):
        self.name = name
a = f('yee')  
print(a.name)
```
宣告結構 F
F ->NAME
當 A -> F 
此時 A->NAME 
為更改值 yee

### 繼承
```
class f():
    def __init__(self,name):
        self.name = name
class f1(f):
    def __init__(self,name):
        super().__init__('yee' + name)
a = f('yee') 
b = f1('yee') 
print(a.name)
print(b.name)
```
super() 繼承 父類別
須注意 class f1(f)
子類別(父類別)

### 測試
```
try:
    test
except:
    print('error')
```
通常用於測試語法
當語法產生錯誤


## 第九章(字串進階)
真的沒意義 :(

### UNICODE
```
import unicodedata
def unicode_name(value):
    name = unicodedata.name(value)
    print('value =',value,'name=',name)
    return name
def unicode_loookup(name):
    value = unicodedata.lookup(name)
    print('name =',name,'value=',value)
    return value

if __name__ == '__main__':
    name = unicode_name('我')
    value = unicode_loookup(name)
    name = unicode_name('\u6211')
    value = unicode_loookup(name)
    name = unicode_name('\U00006211')
    value = unicode_loookup(name)
    name = unicode_name('\N{CJK UNIFIED IDEOGRAPH-6211}')
    value = unicode_loookup(name)
```
unicode_name 轉成uncicode
unicode_lockup 尋找字元

### 加密與解密
```
def utf8(data):
    data_byte=data.encode('utf-8')
    data2=data_byte.decode('utf-8')
    print('將',data,'經過utf8編碼為',data_byte)
    print('將', data_byte, '經過utf8解碼為', data2)
    print(data,'的長度為',len(data))
    print(data_byte, '的長度為', len(data_byte))
if __name__ == '__main__':
    print('我'.encode('unicode-escape'))
    utf8('我')
    utf8('\u6211')
```
用utf8 做舉例
data.encode('utf-8') 資料加密
data_byte.decode('utf-8') 資料解密

### 密碼產生

```
import string
import random
if __name__ == '__main__':
    chs = string.ascii_letters + string.digits
    pwd = ""
    for x in range(random.randint(8,12)):
        pwd += random.choice(chs)
        print(pwd)
```
string.ascii_letters 生成所有字母
string.digits 生成所有數字
透過字串的方式
去產生隨機亂碼
## 第十章(資料夾)

### 函式引入
```
import os
import glob
```
glob模組：用於查找匹配特定模式的檔路徑。
    它支持類似於Unix shell的萬用字元匹配，如*和?等。
os模組：提供了一種方式來使用作業系統依賴的功能。
    比如檔操作、路徑操作、進程管理等。

### 查找所有檔案
```
import os
def find_dir(dir):
    fds = os.listdir(dir)
    for fd in fds:
        full_path = os.path.join(dir,fd)
        if os.path.isdir(full_path):
            print('資料夾:',full_path)
            find_dir(full_path)
        else:
            print('檔案:',full_path)
if __name__ == '__main__':
    path = 'C:\\python-home'
    find_dir(path)
```
os.stdir 返回資料夾內容列表
os.path.isdir 檢查是否有此目錄

### 查找特定類型檔案
```
import glob
if __name__ == '__main__':
    python_files = glob.glob('C:\\*.txt')
    for file_name in python_files:
        print('檔案為' + file_name)
        with open(file_name) as f:
            for line in f:
                print(line.rstrip())
        print()
```
PATH 需填入絕對位置
