1. 程式人生 > 其它 >模組(二)

模組(二)

os模組

      import os

# 建立資料夾
      os.mkdir(r'aaa')  # 建立單層目錄  檔案已存在時無法繼續建立
      os.makedirs(r'bbb/ccc/ddd')  # 建立多級目錄

# 刪除目錄
      os.rmdir(r'aaa')  # 刪除單級的空目錄
      os.removedirs(r'bbb/ccc/ddd')  # 刪除單級目錄,如果外層是空的則繼續刪除

# 檢視檔案路徑下的所有檔名稱
      print(os.listdir(r'E:\pythonProject2\day022'))
      print(os.listdir(r'C:\Users\Administrator\Desktop'))

# 刪除檔案、重新命名檔案
      os.removedirs(r'aaa')
      os.rename(r'aaa', r'aaaaa')

# 獲取檔案路徑,切換檔案路徑
      print(os.getcwd())  # 獲取執行檔案所在的路徑
      os.chdir(r'bbb/ccc/ddd')  # 改寫檔案所在路徑
      print(os.getcwd())

# 軟體開發目錄規範,啟動指令碼相容性
      os.path.dirname(__file__)  # 動態的獲取當前檔案所在的路徑
      os.path.dirname(os.path.dirname(__file__))  # 巢狀一層就是往上一級路徑走一次
      print(os.path.dirname(__file__))  # E:/pythonProject2/day022
      print(os.path.dirname(os.path.dirname(__file__)))  # E:/pythonProject2

# 判斷檔案、資料夾是否存在
      print(os.path.exists(r'aaaaa'))  # 判斷所給路徑是否存在
      print(os.path.exists(r'E:\pythonProject2\day022\bbb\ccc'))
      print(os.path.exists(r'E:\pythonProject2\day022\bbb\ddd'))

      print(os.path.isdir(r'aaaaa'))  # 判斷路徑是否是資料夾
      print(os.path.isdir(r'01.作業講解.py'))  # 判斷路徑是否是資料夾
      print(os.path.isfile(r'aaa'))
      print(os.path.isfile(r'01.作業講解.py'))  # 判斷路徑是否是檔案

# 檔案路徑拼接
      res ='aaaaa'+'/'+'bbb'  # 加號相容性較差
      print(res)
      res = os.path.join('aaaaa', 'bbb')  # 使用join拼接路徑會直接識別系統所需的分隔符
      print(res)

# 檔案大小
      print(os.path.getsize(r'01.作業講解.py'))  # 結果為位元組數

sys模組

      import sys

      print(sys.path)  # 獲取檔案所在的sys.path
      print(sys.version)  # 獲取直譯器版本
      print(sys.platform)  # 獲取平臺資訊
      print(sys.argv)  # 自定義命令
      '''
      if len(sys.argv) == 3:
          username = sys.argv(1)
          password = sys.argv(2)
          if username == 'oliver'and password == '123':
              print('yes')
          else:
              print('no')
      else:
          print('輸入使用者名稱,不能多寫或漏寫')
      '''

json模組(序列化)

      import json

      dic = {'name1': 'oliver', 'name2': 'kevin', 'name3': 'jerry'}
      print(dic, '\n', type(dic))

      res = json.dumps(dic)  # 將字典轉換成json格式
      print(res, '\n', type(res))  # {"name1": "oliver", "name2": "kevin", "name3": "jerry"}  <class 'str'>
      '''
       json格式資料是字串型別,並且雙引號是字串的標誌符號
      '''

      print(str(dic), '\n', type(str(dic)))  # {'name1': 'oliver', 'name2': 'kevin', 'name3': 'jerry'}  <class 'str'>

      dic = {"name1": "oliver", "name2": "kevin"}
      print(dic, type(dic))
      dic = '{"name1": "oliver", "name2": "kevin"}'
      print(dic, type(dic))  # 算是json格式

      dic = {'name1': 'kevin', 'name2': 'kevin'}
      res = json.dumps(dic)  # 將dic轉換為(序列化)json格式
      str1 = res.encode('utf8')  # 對res進行utf8編碼
      print(str1)

      json_str = str1.decode('utf8')  # 解碼之後的格式首先是json格式資料
      print(json_str, type(json_str))
      res1 = json.loads(json_str)  # 然後將資料從json格式轉換為(反序列化)原格式
      print(res1, type(res1))

      '''
      序列化:將python資料型別轉換為json格式
      反序列化:將json格式資料轉換為對應資料型別

      json模組配合檔案使用時
      json.dump()  # 自動將資料轉為json格式,然後寫入檔案(自動序列化)
      json.load()  # 將檔案裡的資料直接轉為其他資料取出(自動反序列化)
      '''

支援序列化的資料型別

python資料型別 json對應型別
dict object
list array
tuple array
str string
int number
float number
True true
False false
None null

subprocess模組

      import subprocess

      res = subprocess.Popen('ls',
                             shell=True,
                             stdout=subprocess.PIPE,
                             stderr=subprocess.PIPE
      )

      print('stdout', res.stdout.read().decode('utf8'))
      print('stderr', res.stderr.read().decode('utf8'))