Python學習三:函數、導包、目錄(文件夾)管理

《毫無障礙學Python》鄧文淵著 學習筆記

1.函數

1.1 函數基本

(1)語法

.
  def 函數名(參數1,參數2,參數3,…):   #參數可無
    程序塊
  return 返回值1,返回值2,返回值3…    #返回值可無

#輸入攝氏求華氏
def cToF(c):
    f = c*1.8+32
    return f
inputc = float(input("Plaese input ℃:"))
print("The 華氏度 is %.1f"%cToF(inputc))
(2)參數順序
def A(a1,a2):
    return a1*a2
a = A(1,2)          #同下及下下
a = A(a1 = 1,a2 = 2)#同上及下
a = A(a2 = 2,a1 = 1)#同上及上上
(3)參數缺省缺省值參數必須在後
def GetArea(w,h=10):    #缺省值參數必須爲後
    return w*h
rel1 = GetArea(6)   #rel1 = 6*10
(4)不定參函數

語法
    *def 函數名稱(參數)
      …

#不定參函數解決求n個參數的總和
def calsum(*params):  #python通過元組的方式把所有參數存於params元組中
    total = 0
    for param in params:
        total +=param
    return total

print(calsum(2,3))
print(calsum(2,3,4))
print(calsum(2,3,4,5))
(5)變量有效範圍 :
  1. 全局變量定義在函數外的變量,有效範圍整個python文件
  2. 局部變量定義在函數內的變量,在函數內有效

局部變量和全局變量同名,函數內使用局部,函數外使用全局

def scope():
    v1 = 1
    print(v1,v2)
v1 = 10
v2 = 20
scope() #v1 == 1,v2 == 20
print(v1,v2)    #v1 == 10,v2 == 20

若要在函數內使用全局變量,需要在函數內部用global關鍵字聲明

def so():
    global v1   #聲明v1是全局變量   
    v1 = 1          #把全局變量的值改爲1
    v2 = 2
    print(v1,v2)
v1 = 10
v2 = 20
so()    # 1  2
print(v1,v2)    #  1  20
(6)系統內置函數
python 常用系統內置函數
abs(x)   返回x的絕對值
chr(x)  返回x所表示的字符 #chr(65) 即A
divmod(x,y)    返回x除以y的商及餘數組成的元組 #divmod(44,6) 即 (7,2)
float(x)   將x轉換爲浮點數
hex(x)    將x轉化爲十六進制數
int(x)   將x轉換爲整數
len(x)    返回參數x的元素個數 len([1,3,5,7]) 即4
max(列表型參數)    返回列表型參數中最大值
min(列表型參數)    返回列表型參數中最小值
oct(x)    將x轉化爲八進制數
ord(x)    返回x的Unicode編碼 ord(“我”) ->25105
pow(x,y)    x的y次方 pow(x,y,z) 表示x的y次方除以z的餘數
round(x)    返回x的四捨六入 round(x,y) 4及以下舍,6及以上進位,5則前一位偶舍奇進round() round(3.65,1)->3.6,round(3.75,1)->3.8
sorted(列表)   由小到大排列   默認  小->大 排 若用reverse = true作爲第二個參數,則大->小
str(x)    將x轉換成字符串
sum(列表)    計算列表中元素總和
type(對象)   返回對象的數據類型
innum = 0
list1 = []
while(innum!=-1):
    innum = int(input("Please input a positive integer(end of -1):"))
    list1.append(innum)
list1.pop()
print("integer number:%d"%len(list1))
print("max is %d"%max(list1))
print("min is %d"%min(list1))
print("sum is %d"%sum(list1))
print("from large to small:{}".format(sorted(list1,reverse = True)))

2.導入包

python有很多內建包(package,包,亦稱模塊)

  1. 內建包導入1import 包名稱
import random   # random產生隨機數的內建包

包中有許多函數,使用語法:包名稱.函數名稱

  1. 包導入2: from 包名稱 import ,    則使用包中函數可不寫包名,可能產生同名函數錯誤風險,則3
  2. 包導入3from 包名稱 import 函數一,函數二,…
  3. 包導入4import 包名稱 as 別名        則可用 別名.函數名 調用

3.文件管理 和 目錄管理

os (提供創建目錄、刪除目錄、刪除文件、執行操作系統命令等),使用時必須導入os包

remove()方法:刪除指定文件,一般結合os.pathexists()方法使用,即先檢查該文件是否存在,再決定是否刪除該文件

import os

file = "myFile.txt"
if os.path.exists(file):
    os.remove(file)
else:
    print(file+" coule not be found!")

.
  mkdir()方法可創建指定名稱的目錄,執行後在當前目錄創建目錄,若該目錄存在則會產生錯誤,所以一般先檢查該目錄是否存在,再決定是否創建該文件(創建一級目錄)

import os

dir = "myDir"
if not os.path.exists(dir):
    os.mkdir(dir)
else:
    print(dir+" already exists!")

os.makedirs()函數可創建多級目錄

os.makedirs('d:\\books\\book')		#os.makedirs()函數創建多級目錄

.  
   rmdir()方法可刪除指定目錄,刪除目錄前必先刪除其中文件,一般檢查目錄是否存在再決定是否刪除目錄

import os

dir = "MyDir"
if os.path.exists(dir):
    os.rmdir(dir)
else:
    print(dir+" dir coule not be found!")

.
  system()方法執行操作系統命令

import os
cur_path = os.path.dirname(__file__)  #取得當前路徑
os.system("cls")    #清屏
os.system("mkdir dir2") #創建dir2目錄
os.system("copy ossystem.py dir2//copyfile.py")  #複製文件
file = "d://python_code//dir2//copyfile.py"
os.system("notepad "+file)  #以記事本打開copyfile.py文件

os.path 用於處理文件路徑及文件名稱、檢查文件或路徑是否存在或計算文件大小
   首先導入os.path 包 import os.path
   包含方法:

abspath()       返回文件完整路徑名
basename()    返回文件路徑名最後部的文件或路徑名,若測試的是文件返回文件名,測試的是路徑會返回路徑最後部分
dirname()    返回指定文件完整路徑,用dirname(file)則可以取得當前目錄路徑
exists()       檢查指定文件或路徑是否存在
getsize()       返回指定文件大小(Bytes)
isabs()       檢查指定路徑是否是爲完整路徑
isfile()       檢查指定路徑是否爲文件
isdir()       檢查指定路徑是否爲目錄
split()      把文件路徑分割爲路徑和名稱
splitdrive()    把文件路徑名分割爲磁盤名和文件路徑名
join()       把路徑和文件名和併成完整路徑
import os.path
cur_path2 = os.path.dirname(__file__) #獲取當前目錄路徑
print("current file rout is "+cur_path2)

filename = os.path.abspath(__file__)
if os.path.exists(filename):
    print("當前目錄路徑爲:"+filename)
    print("文件大小:",os.path.getsize(filename))

    basename = os.path.basename(filename)
    print("路徑最後的文件名爲:"+basename)
    
    dirname = os.path.dirname(filename)
    print("當前文件路徑爲:"+dirname)

    print("是否爲目錄:",os.path.isdir(filename))

    fullpath,fname = os.path.split(filename)
    print("目錄路徑:"+fullpath)
    print("文件名稱:"+fname)

    Drive,fpath = os.path.splitdrive(filename)
    print("盤名:"+Drive)
    print("路徑名稱:"+fpath)

    fullpath = os.path.join(fullpath+"\\"+fname)
    print("合併路徑爲="+fullpath)

os.walk 用於搜索指定目錄及其子目錄,它會返回一個包含三個元素的元組分別爲:文件夾名、下一層文件夾列表、文件夾中所有文件列表

import os
cur_path = os.path.dirname(__file__) # 取得當前路徑
sample_tree = os.walk(cur_path)
for dirname2,subdir,files in sample_tree:
    print("文件路徑:",dirname2)
    print("目錄列表:",subdir)
    print("文件列表:",files)
    print()

shutil包 一個可跨平臺的文件處理包
   導入包:import shutil

常用方法:
copy(src,dst)    複製src(源文件)到dst(目標文件)
copytree(src,dst)    將src目錄及目錄中所有文件複製到dst
rmtree(dir)    刪除dir目錄和目錄中所有文件
move(src,dst)    將src目錄轉移到dst(轉移後源文件被刪除)

glob包 可返回指定條件下的文件列表
   導包 import glob
   glob.glob(“路徑名稱”)    #glob.glob方法指定條件的文件列表,文件路徑可指定確定名稱,也可使用通配符" * "

import glob
files = glob.glob("day20190331筆記.py")+glob.glob("day*.py")+glob.glob("*.txt")
for file in files:
    print(file)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章