Pytho知識總結2

輸入輸出語句 python

  1. python語法

>>> x = 10 git

>>> if x > 5: shell

... print("I'm jack") windows

... python3.x

I'm jack 函數

Python不是靠括號決定語法是否結束,而是靠縮進判斷程序是否結束。Python語言在語法習慣上有些變化: 工具

  1. 括號是可選的,但通常不加括號
  2. 冒號表明符合語句

    Python中全部的符合語句,首行以冒號結尾,下一行的嵌套按照縮進格式書寫,縮進表明代碼塊結束,不用使用大括號表明程序結束。 測試

  3. 用分號表示語句終止
  4. Python須要嚴格執行語法縮進,經過語法縮進判斷程序的邏輯結構
  1. 接收用戶輸入

    1。、接收用戶輸入 this

    >>> info = input('please input you name: ') spa

    在python3中使用input函數接收用戶輸入,而在python2.6之前的版本使用raw_input接收用戶輸入

二、判斷用戶輸入的數據是否爲純數字

①字符串對象的isdigit方法

字符串對象的isdigit方法用於檢測字符串是否爲純數字,若是是純數字返回值爲真,不然返回值爲假

>>> name = 'jack'

>>> age = '20'

>>> name.isdigit() #調用字符串的isdigit方法測試

False

>>> age.isdigit()

True

②四則運算器

③用try測試是否爲數字

try測試更加簡潔,格式:

try:

測試語句

expect:

測試失敗以後的執行語句

else:

測試成功以後的執行的組合語句

注意:else語句是try的組合語句

  1. print打印函數

    在python3.x中,print是一個內置函數,用關鍵字參數來表示特定模式

    在python2.x中,print是語句,擁有本身的特定語法

    1. print函數的使用

>>> name = 'jack'

>>> age = 18

>>> sex = M

>>> print(name,age,sex)

('jack', 18, 'M')

可使用sep參數,在打印的滅個對象文本之間插入一個字符串。若是沒有指定sep,默認使用空格分開打印的對象文本。

>>> print(name,age,sex,sep=":") #使用:做爲分隔符

jack:18:M

>>> print(name,age,sex,sep="") #不使用分隔符

jack18M

使用end參數,在打印的對象文本以後加入一個字符串。默認使用換行符。

>>> print(name,age,sex);print(name,age,sex)

jack 18 M

jack 18 M

>>> print(name,age,sex,end="");print(name,age,sex) #使用end參數,讓輸出不換行

jack 18 Mjack 18 M

>>> print(name,age,sex,end="->");print(name,age,sex)#使用end參數,在輸出內容後面輸出其餘內容

jack 18 M->jack 18 M

sep參數和end參數能夠結合使用

>>> print(name,age,sex,sep=":",end="->\n")

jack:18:M->

也可使用file參數,把print內容直接輸出到指定文件中

>>> print(name,age,sex,sep=":",file=open('test.txt','w'))

  1. 字符串格式化輸出
  2. 字符串格式化轉換類型

格式

描述

%c

字符及其ASCII碼

%s

字符串(使用str轉換任意python對象)

%r

字符串(使用repr轉換任意python對象)

%d(%i)

有符號整數(十進制)

%u

無符號整數(十進制)

%x

無符號整數(十六進制)

%X

無符號整數(十六進制大寫字符)

%e

浮點數字(科學計數法)

%E

浮點數字(科學計數法,用E代替e)

%f(%F)

浮點數字(用小數點符號)

%g

浮點數字(根據值得大小採用%e或%f)

%G

浮點數字(相似於%g)

%p

指針(用十六進制打印值得內存地址)

%n

存儲輸出字符的數量放進參數列表的下一個變量中

  1. 轉換說明符

基本的轉換說明符包含如下部分,注意其中的順序:

A、%字符:標記轉換說明符的開始

B、轉換標識(可選):-標識左對齊,+標識在轉換值以前要加上正負號;""空白字符表示整數以前保留空格;0表示轉換值若位數不夠則用0填充

C、最小字段寬度(可選):轉換後的字符串至少應該具備該值指定的寬度、若是是*,則寬度會從值元組中讀出

D、點(.)後跟精度值(可選):若是轉換的是實數,精度值就表示出如今小數點後的位數。若是轉換的是字符串,那麼該數字就表示最大字段寬度。若是是*,那麼精度將會從元組中讀出。

注意:若是格式化裏面包含了百分號,那麼必須使用%%,這樣python就不會將百分號誤認爲是轉換說明符了

  1. 舉例
  2. 基本用法:

>>> print('%s %s %s %d years old' % ('my','name','is',20))

my name is 20 years old

>>> print (' PI is : %f' % math.pi)

PI is : 3.141593

  1. 字符寬度和精度

>>> print('...%10f...' % math.pi) #輸出十位的浮點數

... 3.141593... #經過…能夠看到左側補了兩位空格,補全到十位

>>> print('...%10.2f...' % math.pi)

... 3.14... #輸出10,小數精度2位,不足位用空格補全

>>> print('...%*.*f...' % (10,5,math.pi))

... 3.14159... #若是精度是*.*,會從值中讀取精度

  1. 符號、對齊和0填充

在字段寬度和精度以前能夠(可選)放置一個"標表",該標表的值能夠是:

0(零):表示數字將會用0進行填充

+(加號):表示不論是正數仍是負數都標示出符號(在對齊時頗有用)

-(減號):表示左對齊數值

空格:表示正數前加上空格,這對須要對齊正負數時會頗有用

>>> print('...%010.2f...' % math.pi)

...0000003.14... #輸出10位,不足位用0補全

>>> print('...%-10.2f...' % math.pi)

...3.14 ... #輸出10位,左側對齊

>>> print('...%+f...' % math.pi)

...+3.141593... #在數值以前輸出正負號

 

Python流程控制

  1. if條件判斷語句
    1. 單分支判斷語句

    >>> age = 18

    >>> if age >= 16:

    ... print("too old")

    ...

    too old

    1. 雙分支判斷語句

    >>> age = 18

    >>> if age >= 16:

    ... print("too old")

    ... else:

    ... print("too young")

    ...

    too old

    1. 多分支判斷語句

    #!/usr/bin/env python

    num = input('please input a num: ')

    if not num.isdigit: #判斷輸出的是否爲數字,不然報錯

    print("error!input a num")

    elif int(num) >= 18: #input接收爲字符型,轉爲整型

    print("old")

    else:

    print("young")

  2. 真值測試

    Python中布爾值測試符

    任何非零數字或非空對象都爲真

    >>> if 1:

    ... print("true")

    ... else:

    ... print("false")

    ...

    True

    數字零、空對象以及特殊對象被認爲假

    >>> if 0:

    ... print("true")

    ... else:

    ... print("false")

    ...

    False

    比較和相等測試會返回True或False

>>> 2 < 3 , 5 < 3

(True, False)

布爾and和or運算符會返回真或假

>>> 1 and 1

1

>>> 1 and 0

0

>>> 0 or 1 #or測試,會由左至右求值操做,返回第一個爲真的操做對象

1

>>> not 1 #若是值爲真,就返回假;若是爲假,就返回真

False

>>> 3 and 4 , 3 and 7 #若是兩側都爲真,則輸出右側的值

(4, 7)

>>> '' and () #若是兩側都爲假,則碰到的第一個假會終止運行,並返回第一個值

''

>>> () and ''

()

  1. 比較運算符

    比較元素符條件中最基本的運算符,詳見下表:

表達式

描述

x == y

X等於y

x < y

X小於y

x > y

X 大於y

X >= y

X大於等於y

X <= y

X小於等於y

X != y

X 不等於y

X is y

X和y是同一個對象

X is not y

X和y是不一樣對象

X in y

X是y容器(序列等)的成員

X not in y

X不是y容器(序列等)的成員

>>> a = 'test'

>>> b = 'text'

>>> if a is b:

... print('True')

... else:

... print('False')

...

False

  1. while循環

    while循環只要測試表達式爲真,就一直循環

>>> a = 1

>>> while a <= 100:

... print(a)

... a += 1

  1. 循環特殊符號
    1. break 跳出整個循環過程
    2. continue 終止本次循環

>>> a = 1

>>> while a <= 10:

... a += 1

... if a == 5:

... continue

... print(a)

  1. pass 是一個無運算的佔位符,表明什麼都不作

    用於:

    >保證格式完整

    >保證語義完整

>>> if age >= 18:

... print("too old")

... else:

... pass

  1. for循環
    1. 基本循環

>>> for i in range(4):

... print(i)

  1. for能夠識別多種數據類型,只要這種數據類型支持序列操做。好比字符串、列表、元組

>>> for i in [1,2,3,4]: #for遍歷列表

... print(i)

>>> for i in 'jack': #for遍歷字符串

... print(i)

>>> for i in (1,2,3,4): #for遍歷元組

... print(i)

>>> y = {'name':'jack','age':'18'}

>>> for x in y :

... print(x,'is',y[x])

...

age is 18

name is jack

  1. range函數

    函數原型:range(start, end, scan)

    參數含義:

    Start:計數從start開始。默認是從0開始

    End:計數到end結束,但不包括end

    scan:每次跳躍的間距,默認爲1

    注意:在python2.x中,range返回值是一個列表

    在python3.x中,range返回值是一個迭代值,因此因此range(5)獲得的值是range(0,5),可是不影響for循環使用,不過要想在命令行中輸出列表,須要:list(range(5)

    >>> list(range(1,20,2))

    [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

     

    Python中重要的系統模塊

  1. 在python中執行shell命令
    1. 調用os模塊的system方法

      >>> import os

      >>> os.system('ls /root')

      使用這種方法不能把執行結果賦值變量,進行程序運算

      >>> a = os.system('ls /root')

      anaconda-ks.cfg install.log install.log.syslog py test.py #命令結果會輸出到屏幕,可是變量中只有命令的返回值

      >>> print(a)

      0

      >>> b = os.system('ls /rootoooo')

      ls: cannot access /rootoooo: No such file or directory

      >>> print(b) #若是命令報錯,則返回值爲非零

      512

    2. 調用os模塊的popen方法

      >>> a = os.popen('ls /root')

      >>> print(a.read())

      經過os.popen()返回的是file read的對象,對其進行讀取read()的操做能夠看到執行的輸出,可是沒法讀取程序執行的返回值

    3. 使用subprocess模塊

      Subprocess是python建立子進程的工具,而後在子進程中執行另外一個進程

      1. 執行系統命令

        >>> subprocess.call(['ls','-l'])

        >>> subprocess.call(['ls','-l','/'])

        #把命令(ls)和選項(-l),以及參數(/)當作列表傳遞給subprocess.call()

        >>> subprocess.call('ls -l',shell=True)

        可使用shell=True這個參數,這個時候,咱們使用一整個字符串,而不是一個列表來運行子進程。Python將會運行一個shell,再用這個shell來解釋這整個字符串

      2. 把命令結果賦值變量

        若是用call方法賦值,只會把命令返回值賦予變量,如:

        >>> a = subprocess.call(['ls','-l'])

>>> print(a)

  1. #變量a的值是命令的返回值

因此須要使用subprocess模塊的check_output方法來給予變量賦值,也可使用getstatusoutput方法

>>> a = subprocess.getstatusoutput('ls /root')

>>> print(a) #調用getstatusoutput,執行命能夠看到返回值與命令結果

(0, 'anaconda-ks.cfg\ninstall.log\ninstall.log.syslog\npy\ntest.py')

>>> b = subprocess.check_output(['ls','-l','/root'])

>>> print(b) #能夠看到命令執行結果

  1. OS模塊的使用
    1. os模塊概述

      python os模塊包含廣泛的操做系統功能,若是你但願你的程序可以與平臺無關的話,這個模塊尤其重要

    2. 經常使用方法
      1. os.name

        #輸出字符串指示正在使用的平臺,若是是windows則用'nt'表示,對於Linux、Unix用戶,則是'posix'

>>> import os

>>> os.name

'posix'

  1. os.getcwd()

    函數獲得當前工做目錄,即當前python腳本工做的目錄路徑

  2. os.listdir()

    返回指定目錄下的全部文件和目錄名

  3. os.remove()

    刪除一個文件

    os.remove('test.py')

  4. os.system() #運行shell命令

    >>> os.system('ls -l /root')

  5. os.path.split()

    函數返回一個路徑的目錄名和文件名

>>> os.path.split('/root/py')

('/root', 'py')

  1. os.path.isfile()和os.path.isdir(0函數分別檢驗給出的路徑是一個文件仍是目錄

>>> os.path.isdir('/root')

True

>>> os.path.isfile('anaconda-ks.cfg')

True

  1. os.path.exists()函數,用來檢驗給出的目錄或文件是否真的存在

>>> os.path.exists('/root')

True

>>> os.path.exists('/rooooooot')

False

  1. os.path.abspath(name) #得到絕對路徑

>>> os.path.abspath('.')

'/root'

>>> os.path.abspath('py')

'/root/py'

  1. os.path.getsize(name) #得到文件或目錄大小

    >>> os.path.getsize('/root')

    4096

    >>> os.path.getsize('/root/py')

    4096

    >>> os.path.getsize('anaconda-ks.cfg')

    1067

(11)os.path.basename() #返回文件名

>>> os.path.basename('/root/anaconda-ks.cfg')

'anaconda-ks.cfg'

(12) os.path.dirname() #返回文件路徑

>>> os.path.dirname('/root/anaconda-ks.cfg')

'/root'

(13) os.remove() #刪除文件

os.remove('/root/test.sh')

(14) os.rmdir() #刪除目錄

os.rmdir('test')

(15) os.mkdir() #創建指定目錄

>>> os.mkdir('/root/dir') #創建一個目錄

>>>os.makedirs('/root/test/dir/jack') #創建多個目錄

  1. logging模塊的使用

    python的logging模塊提供了通用的日誌系統,能夠方便第三方模塊或者是應用使用。這個模塊提供不一樣的日誌級別,並能夠採用不一樣的方式記錄日誌,好比文件,HTTP GET/POST,SNMP,Socket等,甚至能夠本身實現具體的日誌記錄方式。

    一、logging使用

>>> import logging

>>> logging.debug('this is a debuf')

>>> logging.warning('this is a debuf')

WARNING:root:this is a debuf #默認只有warning級別打印到屏幕

日誌級別大小關係爲:CRITICAL > ERROR > WARNING > INFO > DEBUG >NOTSET

  1. 經過logging.basicConfig函數對日誌的輸出格式及方式作相關配置

    logging.basicConfig函數各參數:

    filename:指定日誌文件名

    filemode:和file函數意義相同,指定日誌文件的打開模式,'w'或'a'

    format:指定輸出的格式和內容,format能夠輸出不少有用信息,以下所示:

    %(levelno)s:打印日誌級別的數值

    %(levelname)s:打印日誌級別名稱

    %(pathname)s:打印當前執行程序的路徑,其實就是sys.argv[0]

    %(filename)s:打印當前執行程序名

    %(funcName)s:打印日誌的當前函數

    %(lineno)d:打印日誌的當前行號

    %(sactiome)s:打印日誌的時間

    %(thread)d:打印線程ID

    %(threadName)s:打印線程名稱

    %(process)d:打印進程ID

    %(message)s: 打印日誌信息

Datefmt:指定時間格式,同time.strftime()

Level:設置日誌級別,默認爲logging.WARNING

Stream:指定將日誌的輸出流,能夠指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略。

  1. time模塊的使用

    time模塊時python的時間模塊,在開始以前,首先說明一下幾點:

    1. python中,一般有這幾種方式來表示時間:一、時間戳二、格式化的時間字符串三、元組(struct_time)共九個元素。因爲python的time模塊實現主要調用C庫,因此各個平臺可能有所不一樣。
    2. UTC(Coordnated Universal Time,世界協調時)亦即格林威治天文時間,世界標準時間。在中國爲UTC+8.DST(Daylight Saving Time)即夏令時
    3. 時間戳(timestamp)的方式:一般來講,時間戳表示的是從1970年1月1日08:00:00開始按秒計算的偏移量。運行"type(time。Time())",返回的是float類型。返回時間戳方式的函數主要有time(),clock()等。
    4. 元組(struct_time)方式:struct_time元組共有9個元素,返回struct_time的函數主要有gmtime(),localtime(),strptime()。
    1. 查看當前時間
      1. time_time() #獲取當前時間戳

>>> time.time()

1441255787.3995078 #時間戳是按秒計算偏移量

  1. time.localtime()當前時間的struct_time(元組)形式

    >>> time.localtime()

    time.struct_time(tm_year=2015, tm_mon=9, tm_mday=3, tm_hour=12, tm_min=50, tm_sec=57, tm_wday=3, tm_yday=246, tm_isdst=0)

    time.localtime()輸出說明

索引(Index)

屬性(Attribute)

值(Values)

0

tm_year(年)

好比2013

1

tm_mon(月)

1-12

2

tm_mday(日)

1-31

3

tm_hour(時)

1-23

4

tm_min(分)

0-59

5

tm_sec(秒)

0-61

6

tm_wday(weekday)

0-6(0表示週日)

7

tm_yday(一年中第幾天)

1-366

8

tm_isdst(是不是夏令時)

默認爲-1

  1. time.ctime()當前時間的字符串形式

>>> time.ctime()

'Thu Sep 3 13:02:38 2015'

  1. 其餘相關函數
    1. Gmtime()函數

      #gmtime()方法是將一個時間戳轉換爲UTC時區(0時區)的struct_time

>>> time.gmtime()

time.struct_time(tm_year=2015, tm_mon=9, tm_mday=3, tm_hour=5, tm_min=4, tm_sec=46, tm_wday=3, tm_yday=246, tm_isdst=0)

#查看格林威治標準時間

  1. Mktime()函數

    將一個struct_time或者9個參數的時間元組轉化爲時間戳

>>> time.localtime()

time.struct_time(tm_year=2015, tm_mon=9, tm_mday=3, tm_hour=13, tm_min=6, tm_sec=58, tm_wday=3, tm_yday=246, tm_isdst=0) #查看當前時間元組

>>> time.mktime(time.localtime())

1441256956.0 #把當前時間元組轉爲時間戳

>>> time.mktime((2015,9,3,2,2,9,3,127,0))

1441216929.0 #把這個元組轉爲時間戳

  1. Strftime函數—把一個表明時間的元組或者struct_time(如由time.localtime()和time.gtime()返回)轉化爲格式化的時間字符串。若是tuple未指定,將轉入time.localtime()。

>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())

'2015-09-03 13:16:10' #把當前時間轉換爲字符串日期

日期格式參數說明:

格式

含義

%a

本地(locale)簡化星期名稱

%A

本地完整星期名稱

%b

本地簡化月份名稱

%B

本地完整月份名稱

%c

本地相應的日期和時間表示

%d

一個月中的第幾天(01-31)

%H

一天中的第幾個小時(24小時制,00-23)

%I

第幾個小時(12小時制,01-12)

%j

一年中的第幾天(001-366)

%m

月份(01-12)

%M

分鐘數(00-59)

%p

本地am或者pm的相應符

%S

秒(01-61)

%U

一年中的星期書。(00-53星期天是一個星期的開始)第一個星期以前的全部天數都放在第0周

%w

一個星期中的第幾天(0-6,0是星期天)

%W

和%u基本相同,不一樣的是%W以星期一爲一個星期的開始

%x

本地相應日期

%X

本地相應時間

%y

去掉世紀的年份(00-99)

%Y

完整的年份

%Z

時區的名字(若是不存在爲空字符)

%%

'%'字符

相關文章
相關標籤/搜索