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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章