1. 程式人生 > >第二十天 模塊 sys os os下path settings random shuit

第二十天 模塊 sys os os下path settings random shuit

命令行 驗證碼 替換 分隔符 dom 文件權限 作業 python腳本 return

一.sys模塊

1.sys.argv 命令行參數List,第一個元素是程序本身路徑

2.sys.exit(n) 退出程序,正常退出時exit(0)

3.sys.version 獲取Pythonn解釋程序的版本信息

4.sys.maxint 最大的int值

5.sys.path 返回模塊的搜索路徑,初始化使用PYTHONPATH環境變量的值

6.sys.platform 返回操作系統平臺名稱

拓展

腳本執行時 很多時候需要使用進度條

如何實現

print("[###])

print(‘[####]")

print("[#####]")

分析:

  中括號位置實固定的變化的時裏面的符號

    格式化替換加占位 print("[%-50s]"%"#")

  人家的是不換行的一直在一行刷新進度

    實際上是新的內容覆蓋了舊的內容感覺像是動畫

  中括號的寬度應該是不固定的 根據cmd進行調整 所以當做參數傳進來

    於是print("[%-%ds]")

    發現不行說你傳參傳多了

  定義為方法

  不換行打印 並將光標移動至行其實

二.os模塊

  os.getcwd()獲取當前工作目錄,即當前python腳本工作的目錄路徑

  os.chdir("dirname")

  os.curdir 返回當前目錄:(‘,‘)

  os.pardir 獲取當前目錄的父目錄字符串名:(‘..‘)

  os.makedirs(‘dirname1/dirname2‘) 可生成多層遞歸目錄

  os.removedirs(‘dirname1‘) 若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空

  則刪除,依此類推.

  os,mkdir(‘dirname‘) 生成單級目錄;相當於shell中mkdir dirname

  os.rmdir(‘diname‘) 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相

  當於shell中rmdir dirname

  os,listdir(‘dirname‘) 列出指定目錄下的所有文件和子目錄,包括隱藏文件,

  並以列表的方式打印

  os.remove()刪除一個文件

  os.rename(‘oldname‘,‘newname‘)重命名文件/目錄

  os.stat(‘path/filename‘) 獲取文件/目錄信息

  os.sep 輸出操作系統特定的路徑分隔符,win下為"\\",Linux下為   os.linesep 輸出當前平臺使用的行終止符,win下為"\t\n",Linus下為‘\n‘   os.pathsep 輸出用於分割文件路徑的字符串 win 下為;,Linux為:   os.name輸出字符串指示當前使用平臺 win->‘nt‘;Linux->‘posix‘   os.system(‘bash command‘)運行shell命令,直接顯示   os.environ 獲取環境變量

三 path模塊
  os.path.abspath(path) 返回path規範化的絕對路路徑
  os.path.split(path) 將path分割成?目錄和?文件名?二元組返回
  os.path.dirname(path) 返回path的?目錄。其實就是os.path.split(path)的第
  ?一個元素
  os.path.basename(path) 返回path最後的?文件名。如何path以/或\結尾,
  那麽就會返回空值。即os.path.split(path)的第?二個元素
  os.path.exists(path) 如果path存在,返回True;如果path不不存在,返回
  False
  os.path.isabs(path) 如果path是絕對路路徑,返回True
  os.path.isfile(path) 如果path是?一個存在的?文件,返回True。否則返回False
  os.path.isdir(path) 如果path是?一個存在的?目錄,則返回True。否則返回
  False
  os.path.join(path1[, path2[, ...]]) 將多個路路徑組合後返回,第?一個絕對路路徑之
  前的參數將被忽略略
  os.path.getatime(path) 返回path所指向的?文件或者?目錄的最後存取時間
  os.path.getmtime(path) 返回path所指向的?文件或者?目錄的最後修改時間
  os.path.getsize(path) 返回path的?大?小

  # normcase ?用於將路路規範化 會將?大寫轉為?小寫 斜杠改為當前系統分隔符
  print(os.path.normcase("\\a\\b\\ABCS"))
  # normpath?用於將路路徑規範化 不不僅將?非法的分隔符替換為合法分隔符 還將
  ?大寫轉為?小寫 並且會執?行行..的回到上?一層
  print(os.path.normpath("/a/b/../ABCS"))

5.setting

import os
# 直接寫死不能跨平臺 盡量使用下面兩種
DB_PATH = r"D:\上海python全棧4期\day19\db\高根db.txt"
LOG_PATH = r"D:\上海python全棧4期\day19\log\log.txt"

# 第二種拼接方式  跨平臺
# 先獲取當前路徑
# BASE_DIR2 = os.path.dirname(os.path.dirname(__file__))
# LOG_PATH2 = os.path.join(BASE_DIR2,"log","log.txt")
# print(LOG_PATH2)

# 第三種拼接方式 跨平臺
print(os.path.normpath(__file__))
print(os.path.normpath(os.path.join(__file__,"..","..","log","log.txt")))

6 隨機模塊random

import random
# 隨機數模塊

print(random.random())  #0-1 不包括1隨機浮點數
print(random.randint(1,10)) # 1-10 包括1和10 的整數
print(random.randrange(1,10)) # 1-10包括1 不包括10的整數
print(random.sample(["aaa",["a","b"],3,4,5],2)) # 指定一個範圍並指定需要的隨機個數
ls = ["1","2","3","4"]
random.shuffle(ls) # 打亂順序  洗牌 改的原有列表
print(ls)
print(random.choice([1,2,3])) # 隨機選一個
print(random.choices([1,2,3,4,5,6,7],k=2)) # 隨機選指定個數


# 隨機驗證碼 長度自定義 包括0-9 A-Z a-z
def get_auth_code(length):
    res = ""
    for i in range(length):
        a = random.randint(0,9)
        b = chr(random.randint(65,90))
        c = chr(random.randint(97,122))
        s = random.choice([a,b,c])
        res += str(s)
    return res


print(get_auth_code(4))

7 shutil 模塊
  非常簡便便的?文件操作 壓縮包處理理模塊
  shutil.copyfileobj 拷?貝?文件 提供兩個?文件對象 ?長度表示緩沖區?大?小
  shutil.copyfile(src, dst) 拷?貝?文件 提供兩個?文件路路徑
  shutil.copymode() 拷?貝?文件權限 提供兩個?文件路路徑
  shutil.copystat(src, dst) 拷?貝?文件狀態信息 最後訪問 最後修改 權限 提供兩
  個?文件路路徑
  shutil.copy(src, dst) 拷?貝?文件和權限 提供兩個?文件路路徑
  shutil.copy2(src, dst) 拷?貝?文件和狀態信息 提供兩個?文件路路徑
  shutil.ignore_patterns("mp3","*.py")
  shutil.copytree(src, dst, symlinks=False, ignore=None) 拷?貝?目錄
  symlinks默認False將軟連接拷?貝為硬鏈接 否則拷?貝為軟連接
  shutil.rmtree 刪除?目錄 可以設置忽略略?文件
  shutil.move(src, dst)
移動?目錄和?文件

8.壓縮與解壓縮
  shutil 可以打包 但是?無法解包 並且打包也是調?用tarfile 和 zipFile完成
  解壓需要按照格式調?用對應的模塊
  打包
  shutil.make_archive("test","tar","/Users/jerry/PycharmProjects/package/packa
  ge1")
  import tarfile,zipfile
  zip壓縮
  z = zipfile.ZipFile("test.zip","w")
  z.write("sys.py")
  z.write("start.py")
  z.close()
  zip解壓
  z = zipfile.ZipFile("test.zip",‘r‘)
  z.extractall("/Users/jerry/PycharmProjects/package/aaa")
  z.close()
  tar壓縮
  t = tarfile.open("test.tar","w")
  t.add("start.py")
  t.add("sys.py")
  t.close()
  tar解壓
  t = tarfile.open("test.tar")
  t.extractall("aaa/")
  t.close()

作業:
明日默寫
添加工程根目錄至環境變量 要求可以跨平臺

import os
# 直接寫死不能跨平臺 盡量使用下面兩種
DB_PATH = r"D:\上海python全棧4期\day19\db\高根db.txt"
LOG_PATH = r"D:\上海python全棧4期\day19\log\log.txt"

# 第二種拼接方式  跨平臺
# 先獲取當前路徑
# BASE_DIR2 = os.path.dirname(os.path.dirname(__file__))
# LOG_PATH2 = os.path.join(BASE_DIR2,"log","log.txt")
# print(LOG_PATH2)

# 第三種拼接方式 跨平臺
print(os.path.normpath(__file__))
print(os.path.normpath(os.path.join(__file__,"..",".."


1.課堂上的隨機驗證碼練習

# 隨機驗證碼 長度自定義 包括0-9 A-Z a-z
def get_auth_code(length):
    res = ""
    for i in range(length):
        a = random.randint(0,9)
        b = chr(random.randint(65,90))
        c = chr(random.randint(97,122))
        s = random.choice([a,b,c])
        res += str(s)
    return res


2.把今天講的shutil os sys練習一下

第二十天 模塊 sys os os下path settings random shuit