1. 程式人生 > >python模組引入即一些方法(未完待續……)

python模組引入即一些方法(未完待續……)

一、公共方法:

公共方法

1.檢視記憶體地址: id(param)  ,如,e.g.1

l1 = [1,1,2,3,4,5,6,8]
print('print l1 memory address:',id(l1))#檢視記憶體地址
l2 = [1,1,2,3,4,5,6,8]
print('print l2 memory address:',id(l2))#檢視記憶體地址

2.

e.g.1


二、模組

模組

1.什麼是模組

    模組就是一個包含Python程式碼的文字檔案,對模組的主要需求就是要求檔名以.py結尾

2. copy 模組 e.g.1

    1)匯入模組: import copy

          方法:copy.deepcopy(param)  #深copy

                     概念補充:淺copy,如:l1 = [1,2,3]   那麼l2=l1 即屬於淺copy即,l1和l2指向同一塊記憶體空間

          練習:

l1 = [1,1,2,3,4,5,6,8]
l2 = copy.deepcopy(l1)
print(l2)

3.string 模組

   1)匯入模組:import string

   2)方法(e.g.2):

       a.string.ascii_lowercase  #生成小寫字母
       b.string.ascii_uppercase #生成大寫字母
       c.string.digits              #生成數字
       d.string.ascii_letters      #生成字母(包括大小寫)

       e.string.punctuation    #生成特殊字元

       ps.此處的字元都是英文半形符號

4.time 模組

   1)匯入模組:import time

   2)方法(e.g.3)

        a.time.sleep(seconds)  # 延遲多少秒執行程式 如,time.sleep(60) 即暫停60秒,之後再執行程式,seconds可以為float型別

        b.time.date.today() #獲取當前日期

        c.time.time()     # 返回從元年計時開始到現在的秒數,Return the current time in seconds since the Epoch

5.os模組

    1)概念;os是一個內建模組

    2)方法

        1>  獲取/更改檔案路徑或目錄

            print('獲取父目錄:',os.path.dirname(__file__) )  # 獲取父目錄

                  說明:

                    os.path.dirname(__file__)   #獲取父目錄,__file__代表獲取當前檔案目錄

                    獲取到的路徑與當前系統路徑分隔符不一致 ,需要使用絕對路徑轉一下

            print( os.path.abspath( __file__ ))  # 獲取絕對路徑          

                說明:

                    os.path.abspath( __file__ ) # 獲取當前檔案的絕對路徑

                    可以把__file__換成其他的路徑


            print('獲取當前工作目錄:',os.getcwd() )  # 取當前工作目錄

            print('獲取當前工作目錄上級目錄:',os.path.dirname(os.getcwd()))

            print('更改當前工作目錄,到指定的目錄,返回值為None,可以通過os.getcwd進行驗證:',os.chdir("F:\lp_test\\besttest\\auto_test\homework\syz_automatic_code\day7"))  # 更改當前目錄

            os.curdir   #獲取當前目錄的符號

            print('獲取到當前目錄的符號 >> "."  >> :  ',os.curdir) #打印出來是個.

            print('獲取當前目錄的絕對路徑:',os.path.abspath(os.curdir))  # 當前目錄

            print('獲取父目錄:',os.pardir )  # 父目錄

            print('獲取當前目錄父目錄的絕對路徑:',os.path.abspath(os.pardir))  

            #os.walk  獲取當前目錄的路徑(絕對路徑),目錄名,檔名

            目錄樹生成器,檔案數樹的每級目錄都生成一個三元元組,元組元素為目錄路徑,目錄名列表,檔名列表 

            # for data in os.walk('F:\lp_test\\besttest\\auto_test\homework\syz_automatic_code\day6'):
            #     print(data)
            # for abs_path,dirs,file in os.walk('F:\lp_test\\besttest\\auto_test\homework\syz_automatic_code\day6'):
            #     print(abs_path,dirs,file)
            

        2>獲取系統路徑分隔符

            #print('當前系統分隔符:',os.sep)  # 當前作業系統的路徑分隔符

            #print('獲取當前系統換行符:',os.linesep)  # 當前作業系統的換行符 window \r\n

        3>更改檔案/目錄訪問許可權

            os.chmod( "/usr/local", 7 )  # 給檔案/目錄加許可權 適用於linux系統

        4>建立目錄

            print( os.makedirs( "test2/test3" ) )  # 遞迴建立資料夾,父目錄不存在時建立父目錄 #已經存在FileExistsError: [WinError 183] 當檔案已存在時,無法建立該檔案。: 'test2/test3'

            print( os.mkdir( "test2/test6" ) )  # 建立資料夾  #建立多層目錄,如果父目錄不存在FileNotFoundError: [WinError 3] 系統找不到指定的路徑。: 'test4/test5',目錄以存在也會報錯

        5>刪除目錄

            print( os.removedirs( "test2/test6" ) )  # 遞迴刪除空目錄,只能刪除空目錄,如果刪除的目錄不存在會報錯,FileNotFoundError: [WinError 2] 系統找不到指定的檔案。: 'test2/test6'

            print( os.rmdir( "test2" ) )  # 刪除指定的資料夾  只能刪除空的目錄OSError: [WinError 145] 目錄不是空的。: 'test2'

            print( os.remove( "test2/test5/123" ) )  # 刪除檔案 只能刪除檔案,不能刪除資料夾 PermissionError: [WinError 5] 拒絕訪問。: 'test2',如果刪除的檔案不存在會報異常,FileNotFoundError: [WinError 2] 系統找不到指定的檔案。: 'test2/test5/123'

        6>獲取目錄的檔名及目錄名

            print('將當前路徑中的檔案及資料夾放在一個list中:',os.listdir())  # 列出當前目錄下所有的檔案及資料夾放在一個list中

            print('當前目錄的父目錄:%s,包含的檔案及資料夾list:%s'%(os.path.abspath(os.pardir),os.listdir(os.path.abspath(os.pardir))))  # 列出當前目錄下所有的檔案及資料夾放在一個list中

            os.scandir()     """ scandir(path='.') -> iterator of DirEntry objects for given path """ 為給定的路徑生成一個DirEntry物件的迭代器

            print(':',os.scandir(os.path.abspath(os.path.dirname(__file__))))  返回的是一個一個Direntry的迭代器

        7>重新命名

            os.rename( "liangpan.py", "lprename.py" )  # 重新命名,將liangpan.py檔名重新命名為lprename.py,如果檔名找不到會報異常,FileNotFoundError: [WinError 2] 系統找不到指定的檔案。: 'liangpan.py' -> 'lprename.py'

        8>獲取檔案資訊

            print('獲取檔案資訊:',os.stat( "lprename.py" ) )  # 獲取檔案資訊

            # print( os.path.getatime( "len_os.py" ) )  # 輸出最近訪問時間

            os.path.getsize()    #獲取檔案大小,常用

            size = os.path.getsize('day6_2_new.py')  #獲取檔案大小單位B

            print('檔案大小:%s bytes'%size)

        9>獲取系統分隔符

            print('當前系統分隔符:',os.sep)  # 當前作業系統的路徑分隔符
            print('獲取當前系統換行符:',os.linesep)  # 當前作業系統的換行符 window \r\n
            print('當前系統環境變數的分隔符:',os.pathsep )  # 當前系統的環境變數中每個路徑的分隔符,linux是:,windows是;

            print('當前系統的環境變數:',os.environ )  # 當前系統的環境變數,返回的是一個元組,元組中是一個字典

        10>判斷

            os.path.isfile(path)  #傳入的路徑是否為一個常規的檔案,常用         print( os.path.isfile( "/usr/local" ) )  # 判斷是否是一個檔案

e.g.1copy方法解釋
def deepcopy(x, memo=None, _nil=[]):
    """Deep copy operation on arbitrary Python objects.
    See the module's __doc__ string for more info.
    """
if memo is None:
        memo = {}

    d = id(x)
    y = memo.get(d, _nil)
    if y is not _nil:
        return y

    cls = type(x)

    copier = _deepcopy_dispatch.get(cls)
    if copier:
        y = copier(x, memo)
    else:
        try:
            issc = issubclass(cls, type)
        except TypeError: # cls is not a class (old Boost; see SF #502085)
issc = 0
if issc:
            y = _deepcopy_atomic(x, memo)
        else:
            copier = getattr(x, "__deepcopy__", None)
            if copier:
                y = copier(memo)
            else:
                reductor = dispatch_table.get(cls)
                if reductor:
                    rv = reductor(x)
                else:
                    reductor = getattr(x, "__reduce_ex__", None)
                    if reductor:
                        rv = reductor(4)
                    else:
                        reductor = getattr(x, "__reduce__", None)
                        if reductor:
                            rv = reductor()
                        else:
                            raise Error(
                                "un(deep)copyable object of type %s" % cls)
                if isinstance(rv, str):
                    y = x
                else:
                    y = _reconstruct(x, memo, *rv)

    # If is its own copy, don't memoize.
if y is not x:
        memo[d] = y
        _keep_alive(x, memo) # Make sure x lives at least as long as d
return y

_deepcopy_dispatch = d = {}
e.g.2string方法
import string
print('lowercase:',string.ascii_lowercase)  #列印小寫字母
print('uppercase:',string.ascii_uppercase)  #列印大寫字母
print('digits:',string.digits)           #列印數字
print('letters:',string.ascii_letters)    #大寫小寫字母
print('punctuation:',string.punctuation)      #特殊字元
e.g.3 time模組方法

1.time.sleep

def sleep(seconds): # real signature unknown; restored from __doc__
    """
    sleep(seconds)
    
    Delay execution for a given number of seconds.  The argument may be
    a floating point number for subsecond precision.

    """