1. 程式人生 > >day6 SYS模塊

day6 SYS模塊

移動文件 www ignore 用戶 pfile poi none () 移動

SYS模塊

用於提供對Python解釋器相關的操作:

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

>>> sys.argv
  [‘‘]

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

(3)sys.version 獲取Python解釋程序的版本信息

(4)sys.maxint 最大的Int

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

>>> sys.path
  [‘‘, ‘/usr/local/lib/python3.5/dist-packages/pygame-1.9.4.dev0-py3.5-linux-x86_64.egg‘, ‘/usr/lib/python35.zip‘, ‘/usr/lib     /python3.5‘, ‘/usr/lib/python3.5/plat-x86_64-linux-gnu‘, ‘/usr/lib/python3.5/lib-dynload‘, ‘/home/zhuzhu/.local/lib/python3.5   /site-packages‘, ‘/usr/local/lib/python3.5/dist-packages‘, ‘/usr/lib/python3/dist-packages‘]
(6)sys.platform 返回操作系統平臺

名稱

>>> sys.platform
  ‘linux‘
(7)sys.stdin 輸入相關

(8)sys.stdout 輸出相關

(9)sys.stderror 錯誤相關

進度百分比:

import time,sys
def view_bar(num,total):
    rate = float(num) / float(total)
    rate_num = int(rate * 100)
    r = \r%d%% %(rate_num,)
    sys.stdout.write(r)
    sys.stdout.flush()

if __name__ == "__main__": for i in range(0,100): time.sleep(0.1) view_bar(i,100)

shutil模塊

高級的文件、文件夾、壓縮包 處理模塊

(1)copyfileobj(fsrc,fdst,length=16*1024)

def copyfileobj(fsrc, fdst, length=16*1024):
    """copy data from file-like object fsrc to file-like object fdst"""
    while 1:
    buf = fsrc.read(length)
    if not buf:
    break
    fdst.write(buf)

shutil.copyfileobj(fsrc, fdst[, length])

import shutil #導入模塊

  shutil.copyfileobj(open("old_file","r"),open("new_file","w")) #打開兩個文件,把一個文件的內容復制到另外一個文件

(2)shutil.copyfile(src, dst)

def copyfile(src, dst, *, follow_symlinks=True):
    """Copy data from src to dst.

    If follow_symlinks is not set and src is a symbolic link, a new
    symlink will be created instead of copying the file it points to.

    """

import shutil #導入文件

  shutil.copyfile("old_file","new_file") #把一個文件信息導入另外一個文件

(3)shutil.copymode(src, dst)

僅拷貝權限。內容、組、用戶均不變

shutil.copymode(‘f1.log‘, ‘f2.log‘)

(4)shutil.copystat(src, dst)

僅拷貝狀態的信息,包括:mode bits, atime, mtime, flags

shutil.copystat(‘f1.log‘, ‘f2.log‘)

(5)shutil.copy(src, dst)

拷貝文件和權限

shutil.copy(‘f1.log‘, ‘f2.log‘)

(6)shutil.copy2(src, dst)

拷貝文件和狀態信息

shutil.copy2(‘f1.log‘, ‘f2.log‘)

(7)shutil.ignore_patterns(*patterns)

(8)shutil.copytree(src, dst, symlinks=False, ignore=None)

遞歸的去拷貝文件夾

import shutil

shutil.copytree(‘folder1‘, ‘folder2‘, ignore=shutil.ignore_patterns(‘*.pyc‘, ‘tmp*‘))

(9)shutil.rmtree(path[, ignore_errors[, onerror]])

遞歸的去刪除文件

import shutil

shutil.rmtree(‘folder1‘)

(10)shutil.move(src, dst)

遞歸的去移動文件,它類似mv命令,其實就是重命名

import shutil

shutil.move(‘folder1‘, ‘folder3‘)

(11)shutil.make_archive(base_name, format,...)

創建壓縮包並返回文件路徑,例如:zip、tar

創建壓縮包並返回文件路徑,例如:zip、tar

base_name: 壓縮包的文件名,也可以是壓縮包的路徑。只是文件名時,則保存至當前目錄,否則保存至指定路徑

如:www =>保存至當前路徑

如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/

format: 壓縮包種類,“zip”, “tar”, “bztar”,“gztar”

root_dir: 要壓縮的文件夾路徑(默認當前目錄)

owner: 用戶,默認當前用戶

group: 組,默認當前組

logger: 用於記錄日誌,通常是logging.Logger對象

#將 /Users/wupeiqi/Downloads/test 下的文件打包放置當前程序目錄

import shutil

ret = shutil.make_archive("wwwwwwwwww", ‘gztar‘, root_dir=‘/Users/wupeiqi/Downloads/test‘)

#將 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目錄

import shutil

ret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww", ‘gztar‘, root_dir=‘/Users/wupeiqi/Downloads/test‘)

shutil 對壓縮包的處理是調用 ZipFile 和 TarFile 兩個模塊來進行的,詳細:

import zipfile
#壓縮

z = zipfile.ZipFile("lowb.zip","w")      #首先打開文件,並向文件中添加要壓縮的文件
z.write("new_file")
z.write("old_file")          #向文件中添加文件,一起解壓,添加壓縮文件
z.close()

#解壓 
z = zipfile.ZipFile("lowb.zip","r")      #首先打開文件,然後進行解壓
z.extractall()                           #解壓文件
z.close()

tar格式的壓縮和解壓

import tarfile

# #對文件進行壓縮
# tar = tarfile.open("lowB.tar","w")     #首先打開文件,添加要壓縮的文件
# tar.add("new_file")
# tar.add("old_file")
# tar.close()


#解壓文件
tar = tarfile.open("lowB.tar","r")    #首先打開文件,然後再進行解壓
tar.extractall()              #可設置解壓地址
tar.close()

壓縮解壓文件都是首先要打開文件,壓縮文件要向裏面添加文件,添加要壓縮的文件;解壓文件也要先打開文件,然後使用extractall()進行解壓。

day6 SYS模塊