python学习笔记(2)

接python学习笔记(1)

一、python之公共方法

enumerate()用于将一个可遍历的数据对象(列表,元组,字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中

len()的例子

dict1={"name":"python","age":20}
print(len(dict1))
结果为:2

del的例子

str1="aa"
del str1
print(str1)

max()和min()的例子

list1=[1,2,3,4,6]
str1="abcdhfiaopr"
print(max(str1))
print(min(list1)
结果为:
r
1

range()的例子:range()要和for循环配合使用,只用print是显示不出结果的

for i in range(10):  #不写开始,默认从0开始,到10结束,不包含10
    print(i)
结果为:
0 1 2 3 4 5 6 7 8 9

enumerate()的例子

语法:enumerate(可遍历对象,start=0)
start参数用来设置遍历数据的下标的起始值,默认为0
返回结果是元组,元组第一个数据是数据的下标,第二个是数据本身

list1=["a","b","c","d"]
for i in enumerate(list1):
    print(i)
结果为:
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')

设置start参数:

list1=["a","b","c","d"]
for i in enumerate(list1,start=1):
    print(i)
结果为:
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')

二、数据类型的转换

1、tuple():将某个序列转换成元组

list1=["a","b","c","d"]
s1=(10,20,30,40)
s1={4,5,6,7}
print(tuple(list1))
print(tuple(s1))
结果为:
('a', 'b', 'c', 'd')
(4, 5, 6, 7)

list():将某个序列转换成列表

list1=["a","b","c","d"]
t1=(10,20,30,40)
s1={4,5,6,7}
print(list(t1))
print(list(s1))
结果为:
[10, 20, 30, 40]
[4, 5, 6, 7]

set():将某个序列转换成集合

list1=["a","b","c","d","a"]
t1=(10,20,30,40,10,10)
s1={4,5,6,7}
print(set(list1))
print(set(t1))
集合具有去重功能,不支持下标,结果为:
{'a', 'c', 'd', 'b'}
{40, 10, 20, 30}

三、推导式

什么叫做推导式?

推导式就是化简python代码用的
只支持以下三种推导式:
列表推导式,字典推导式,集合推导式

1、列表推导式

用一个表达式创建一个有规律的列表或控制一个有规律的列表

要求:写一个0-9的列表
不用推导式写出来的代码

while循环实现
i=0
list=[]
while i<10:
    list.append(i)
    i+=1
print(list)for循环实现:
list=[]
for i in range(10):
    list.append(i)
print(list)
结果都为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

用推导式写出来的代码:
写法:都要用到for循环,返回数据要在最左侧填写,即i

list=[i for i in range(10)]
print(list)
结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

带if的列表推导式

需求:创建0-10之间的偶数列表
1、可以用range()步长实现

list=[i for i in range(0,10,2)]
print(list)
结果为:[0, 2, 4, 6, 8]

2、if实现

list=[i for i in range(10) if i%2==0]
print(list)
结果为:[0, 2, 4, 6, 8]

多for循环实现列表推导式

需求:创建列表如下:
【(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)】
如果用嵌套是写效果如下:

list=[]
for i in range(1,3):
    for j in range(3):
        list.append((i,j))
print(list)

用推导式写如下:

list=[(i,j) for i in range(1,3) for j in range(3)]
print(list)

2、字典推导式

快速合并列表为字典,或提取字典中的目标数据

需求:创建一个字典,key为1-5的数字,value为这个数字的2次方

dict1={i:i**2 for i in range(1,6)}
print(dict1)
结果为:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

将两个字典合并为一个字典

list1=["name","age","gender"]
list2=["tom",20,"man"]
dict1={list1[i]:list2[i] for i in range(len(list1))} 
print(dict1)
两个列表数据个数要相同,不然会报出范围越界的错误
结果为:
{'name': 'tom', 'age': 20, 'gender': 'man'}

提取字典中目标数据
需求:

提取电脑台数大于200的电脑品牌

counts={"dell":268,"lenovo":199,"acer":300,"hp":124}
count1={key:value for key,value in counts.items()if value>200}
print(count1)
结果为:
{'dell': 268, 'acer': 300}

3、集合推导式

使用几率没有前两个高

list1=[1,1,2]
set1={i**2 for i in list1}
print(set1)
结果为:
{1, 4}  集合会去重哦

四、函数(重点)

1、函数的作用

函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求。
函数在开发过程中,可以封装代码,实现高效的代码重用

2、函数的使用步骤

1、定义函数

def 函数名(参数):
	代码1
	代码2
	......

2、调用函数

函数名(参数)

注意:
1、不同的需求,参数可有可无
2、在python中,函数必须先定义,后使用
3、当调用函数的时候,解释器会回到定义函数的地方去执行下方缩进的代码,当这些代码执行完,回到调用函数的地方继续向下执行

3、函数的参数作用

可以传入要变化的数据,让函数使用起来更加灵活

def add_num(a,b):#a,b都为形参
    result=a+b
    print(result)

add_num(10,3)  #10,3为真是数据,为实参
结果为:13

4、函数的返回值作用

在函数中,如果需要返回结果给用户,需要使用函数返回值

def buy():
    return "烟"
    print("ok")
goods=buy()
print(goods)
结果为:烟

注意:
1、return退出当前代码,导致return下方的所有代码不执行

5、应用

需求:制作一个计算器,计算任意两个数字之和,并保存结果

def sum_num(x,y):
    return x+y

result=sum_num(1,2)
print(result)
结果为:3

6、函数的说明文档

定义一个函数之后,程序员如何书写程序能够快速提示这个函数的作用?
如果代码很多,我们要找到函数才能看到注释,如果想要更方便的查看函数的作用,就用到函数的说明文档

语法:
定义函数的说明文档

def 函数名(参数):
	"说明文档的位置"
	代码
	......

查看函数的说明文档

help(函数名)

例子:

def sum_num(a,b):
    """求和函数"""
    return a+b

help(sum_num)

结果为:
在这里插入图片描述
函数说明文档的高级使用
在多行注释直接加回车,就可以出现高级使用

def sum_num(a,b):
    """
    求和函数
    :param a: 参数1
    :param b: 参数2
    :return: 返回值
    """
    return a+b
help(sum_num)

结果为:
在这里插入图片描述

7、函数嵌套调用

一个函数里面又调用了另外一个函数,化简代码量

例子1:两个函数testA和testB,在A里面要嵌套调用B

def testB():
    print("B函数开始")
    print("这是B函数")
    print("B函数结束")
    
def testA():
    print("A函数开始")
    testB()
    print("A函数结束")
testA()

例子2:打印多条横线,横线条数由自己决定输入

def print_line():
    print("-"*20)

def print_lines(num):
    i=0
    while i<num:
        print_line()
        i+=1

print_lines(3)

结果为:
在这里插入图片描述
例子3:求三个数的平均值

def sum_num(a,b,c):
    return a+b+c

def sum_avg(a,b,c):
    sumResult=sum_num(a,b,c)
    return sumResult/3
avg=sum_avg(1,2,3)
print(avg)
结果为:2.0

五、函数的重点

1、变量作用域

局部变量

所谓局部变量是定义在函数体内的变量,即只在函数体内部生效;
在函数体内部,临时保存数据,即当函数调用完之后,则销毁局部变量

def testA():
    a=100
    print(a)

testA()
print(a)

结果为:
在这里插入图片描述
变量a是定义testA函数内部的变量,在函数外部访问则立即报错

全局变量

所谓全局变量,指的是在函数内外部都能生效的变量

a=100
def testA():
    print(a)

def testB():
    #a.append(20)
    print(a)

testA()
testB()
结果为:
100
100
100

修改全局变量

global 关键字声明,x为全局变量

a=100
def testA():
    print(a)

def testB():
	#修改全局变量
    global a
    a=300
    print(a)

testA()
testB()
print(a)
结果为:
100
300
300

2、多函数程序执行流程

在实际开发过程当中,一个程序往往由多个函数组成,并且多个函数共享某些数据

glo_num=0
def test():
    global glo_num
    glo_num=90
    print(glo_num)

print(glo_num)  #值为0,因为修改的函数没有执行
test()
print(glo_num)   #值为90,因为调用了函数
结果为:
0
90
90

返回值作为参数传递:先得到test1的返回值,再把这个返回值传入到test2中

def test1():
    return 50

def test2(num):
    print(num)

result=test1()
test2(result)

3、函数的返回值

如果一个函数有两个返回值,程序该如何执行?此时我们就要想到如果写两个return,return也有退出函数的作用,所以第二个return不会返回数据

def return_num():
    return 1,2
result=return_num()
print(result)
结果为:(1, 2)

注意:
1、return a,b写法,函数如果有多个返回值,返回的是一个元组
2、return后面可以连接列表,元组或字典,以返回多个值

4、函数的参数

1、位置参数

调用函数时,根据函数定义的参数位置来传递参数

def user_info(name,age,gender):
    print(f"您的名字是{name},年龄是{age},性别是{gender}")

user_info("tom",20,"man")
结果为:您的名字是tom,年龄是20,性别是man

2、关键字参数

通过"键=值"形式加以指定,可以让函数更加清晰,容易使用,同时也清除了参数的顺序需求。

def user_info(name,age,gender):
    print(f"您的名字是{name},年龄是{age},性别是{gender}")

user_info("tom",gender="man",age=20)
结果为:您的名字是tom,年龄是20,性别是man

注意:位置参数必须写在关键字参数的前面

3、缺省参数

缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值。

def user_info(name,age,gender="男"):
    print(f"您的名字是{name},年龄是{age},性别是{gender}")

user_info(name="tom",age=20)
user_info(name="tom",age=20,gender="女")

注意:位置参数必须写在默认参数的前面

4、不定长参数

不定长参数也叫可变参数。用于不确定调用的时候会传递多少个参数的场景。此时,可用包裹(packing)位置参数,或者包裹关键字参数,来进行采纳数传递,会显得非常方便

包裹位置传递:
def user_info(*args):
    print(args)
user_info("rose")
user_info("tom",18)
结果为:
('rose',)
('tom', 18)

注意:传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组,args是元组类型,这就是包裹位置传递

包裹关键字传递

收集所有关键字参数,返回一个字典

def user_info(**kwargs):
    print(kwargs)
user_info()
user_info(name="tom",age=20,id=100)
结果为:
{}
{'name': 'tom', 'age': 20, 'id': 100}

无论是包裹位置传递还是包裹关键字传递,都是一个组包的过程

5、拆包和交换两个变量的值

1、拆包

拆包:元组

def return_num():
    return 100,200
num1,num2=return_num()
print(num1)
print(num2)
结果为:
100
200

拆包:字典

dict1={"name":"tom","age":18}
a,b=dict1  #dict1中有两个键值对,拆包的时候用两个变量接收数据
print(a)   #取key值
print(b)
print(dict1[a]) #取value值
print(dict1[b])

2、交换变量值

a,b=1,2
a,b=b,a
print(a)
print(b)
结果为:
2
1

6、引用

1、了解引用
在python中,值是靠引用来传递来的
可以用id()来判断两个变量是否为同一个值的引用

def test1(a):
    print(a)
    print(id(a))
    a+=a
    print(a)
    print(id(a))

a=100
test1(a)
c=[11,22]
test1(c)

结果为:
在这里插入图片描述

7、可变和不可变类型

所谓可变类型与不可变类型:数据能够直接进行修改,若能直接修改就是可变,否则就是不可变

可变类型

  • 列表
  • 字典
  • 集合

不可变类型

  • 整型
  • 浮点型
  • 字符串
  • 元组

六、函数的加强

1、应用:学员管理系统

1、系统简介

需求:进入系统显示系统功能界面,功能如下:
1、添加学员
2、删除学员
3、修改学员信息
4、查询学员信息
5、显示所有学员信息
6、退出系统
系统一共6个功能,用户根据自己需求选取

2、步骤分析

1、显示功能界面
2、用户输入功能序号
3、根据用户输入的功能序号,执行不同的功能(函数)

3、需求实现
代码如下:

#1、定义功能界面函数
def info_print():
    print("---请选择功能---")
    print("1、添加学员")
    print("2、删除学员")
    print("3、修改学员信息")
    print("4、查询学员信息")
    print("5、显示所有学员信息")
    print("6、退出系统")
    print("-"*20)
#添加学员信息的函数
# 所有功能函数都是操作学员信息,存储所有学员信息应该是一个全局变量,数据类型为列表
info=[]
def add_info():
    """添加学员函数"""
    #用户输入姓名,学号,手机号
    new_name=input("请输入姓名:")
    new_id=input("请输入学号:")
    new_tel=input("请输入手机号:")
    global info
    #判断学员是否已经存在,存在就报错,不存在就添加数据
    #用户输入的姓名如果和列表里面字典的name值相等,就报错
    #下面遍历的i为字典
    for i in info:
        if new_name==i["name"]:
            print("用户已经存在")
            #退出当前函数,后面添加信息的代码不执行
            return
    #不存在就添加
    info_dict={}
    info_dict["name"] = new_name
    info_dict["id"] = new_id
    info_dict["tel"] = new_tel
    print(info_dict)
    info.append(info_dict)
    print(info)
#删除学员
def del_info():
    """删除学员信息"""
    #用户输入删除学员的姓名
    del_name=input("请输入你要删除的姓名")
    global info
    #判断学员是否存在
    for i in info:
        if del_name==i["name"]:
            info.remove(i)
            break
    #当整个循环正常执行之后,再执行else的代码
    else:
        print("该学员不存在")
    print(info)
#修改学员信息
def modify_info():
    """修改学员信息"""
    modify_name=input("请输入要修改的学员姓名")
    global info
    for i in info:
        if modify_name==i["name"]:
            i["tel"]=input("请输入新的手机号:")
            break
    else:
        print("该学员不存在")
    print(info)
#查询学员信息
def search_info():
    """查询学员信息"""
    searcht_name=input("请输入要查询的学员姓名")
    global info
    for i in info:
        if searcht_name==i["name"]:
            print("-----查找到的学员信息如下:-----")
            print("该学员的姓名是{},学号是{},手机号是{}".format(i["name"],i["id"],i["tel"]))
            break
    else:
        print("该学员不存在")
#显示所有学员信息
def print_all():
    """显示所有学员信息"""
    print('学号\t姓名\t手机号')
    for i in info:
        print(f"{i['id']}\t{i['name']}\t{i['tel']}")
# 系统功能需要循环使用,直到用户输入6才退出系统
while True:
#显示功能界面
    info_print()
    #2、用户输入功能序号
    user_num=int(input("请输入功能序号:"))
    #3、按照用户输入功能序号,执行不同的功能(函数)
    if user_num==1:
        add_info()
    elif user_num==2:
        del_info()
    elif user_num==3:
        modify_info()
    elif user_num==4:
        search_info()
    elif user_num==5:
        print_all()
    elif user_num==6:
        exit_flag=input("确定要退出吗? (yes/no):")
        if exit_flag=="yes":
            break
    else:
        print("输入有误,请输入正确的数字(1-6)")

2、递归

1、递归的应用场景

1、在日常开发中,如果要遍历一个文件夹下面所有的文件,通常使用递归来实现
2、在后续算法中,很多算法都离不开递归,例如:快速排序

2、递归的特点

1、函数内部自己调用自己
2、必须有出口

3、递归代码实现
求3以内的数字累加和

#3以内数字累加和为3+2+1
#2以内数字累加和:2+1
#1以内数字累加和:=1,这是出口
def sum_numbers(num):
    #如果是1,直接返回1--->出口
    if num==1:
        return 1
    #如果不是1,重复执行累加并返回结果,当前数字+当前数字-1
    return num+sum_numbers(num-1)

a=sum_numbers(3)
print(a)
结果为:6

4、递归函数的执行流程
在这里插入图片描述

3、lambda表达式

1、应用场景

如果一个函数有一个返回值,并且只有依据代码,可以使用lambda简化,lamdba可以节省内存空间

2、lambda语法

lambda  参数列表:表达式
1lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用
2lambda表达式能够接收任何数量的参数,但只能返回一个表达式的值

lambda的例子:

用函数表示:
def fn1():
    return 100
print(fn1())
print(fn1)lambda表示:
fn2= lambda:100
print(fn2()) 
print(fn2) #打印的是lambda内存地址
结果为:
100
<function <lambda> at 0x0000025C6DB46730>

计算任意两个值相加

用函数实现:
def sum_num(a,b):
    return a+b
print(sum_num(1,3))lambda实现:
fn1=lambda a,b:a+b
print(fn1(1,3))

3、lambda的参数形式
1、无参数

fn1=lambda :100
print(fn1())
结果为:100

2、一个参数

fn1=lambda a:a
print(fn1("hello world"))
结果为:hello world

3、默认参数(缺省参数)

fn1=lambda a,b,c=100:a+b+c
print(fn1(10,10))
print(fn1(10,10,10))
结果为:
120
30

4、不定长参数(可变参数)

fn1=lambda *args:args   #返回的是元组
print(fn1(1,2,3,4,5))
结果为:
(1, 2, 3, 4, 5)

fn1=lambda **kwargs:kwargs   #返回的是字典
print(fn1(name="tom",age=20))
结果为:
{'name': 'tom', 'age': 20}

4、lambda的应用
1、带判断的lambda

两个数字比大小,谁大返回谁
fn1=lambda a,b:a if a>b else b
print(fn1(4,5))
结果为:5

2、列表数据按照字典key的值进行排序

students=[
    {"name":"tom","age":19},
    {"name": "rose", "age": 22},
    {"name": "jack", "age": 16}
]
#按age值进行降序排序,升序省略reverse这个参数就可以
students.sort(key=lambda i:i["age"],reverse=True)
print(students)
结果为:
[{'name': 'rose', 'age': 22}, {'name': 'tom', 'age': 19}, {'name': 'jack', 'age': 16}]

4、高阶函数

把函数作为参数传入,这样的函数称为高阶函数,高阶函数就是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。

1、体验高阶函数
在python中,abs()函数可以完成对数字求绝对值;round()函数可以完成对数字的四舍五入计算
需求:任意两个数字,按照指定要求整理数字后再进行求和计算

方法1:普通函数
def add_num(a,b):
    return abs(a)+abs(b)
print(add_num(-3,-5))
方法2:高阶函数
def sum_num(a,b,f):
    return f(a)+f(b)
print(sum_num(-2,3,abs))
print(sum_num(1.6,3.2,round))
方法2的代码更加简洁,f作为函数但却作为一个参数传入,使得函数的灵活性更高

2、内置高阶函数之map

map(func,lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(python2)/迭代器(python3)返回

需求:计算list1序列中各个数字的2次方

list1=[1,2,3,4,5] #准备列表数据
def func(x):      #准备2次方计算的函数
    return x**2
result=map(func,list1)  #将函数func功能作用于列表list1的每个数据,调用map
print(result)         #打印内存地址
print(list(result))  #想要查看数据,就要转换数据为列表
结果为:
[1,4,9,16,25]

3、内置高阶函数之reduce

reduce(func,lst),其中func必须有两个参数,每次func计算的结果继续和序列的下一个元素做累积计算。reduce()传入的参数func必须接收2个参数

需求:计算list1序列中各个数字的累加和

import functools   #导入模块
list1=[1,2,3,4,5]
def func(a,b):    #定义加法计算的函数,两个参数
    return a+b
result=functools.reduce(func,list1) #功能函数计算的结果和序列的下一个数据做累积计算
print(result)
结果为:15

4、内置高阶函数之filter

filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转换为列表,可以使用list()来转换

需求:打印列表里的偶数

list1=[1,2,3,4,5,6,7,8,9,10]
def func(i):
    return i%2==0
result=filter(func,list1)
print(result)
print(list(result))

七、文件操作

1、文件操作的作用

读取内容,写入内容,备份内容,移动位置…
文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力

2、文件的基本操作

1、打开

在python中,使用open()函数,可以打开一个已经存在的文件,或者新建一个文件

语法如下:

文件对象=open(name,mode)
name:要打开的目标文件名的字符串(可以包含文件所在的具体路径)
mode:设置打开文件的模式(访问模式):只读,写入,追加等

访问模式如下:

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式
w只写操作。如果该文件已存在则打开文件,并从头开始编辑,原有内容会被删除;如果该文件不存在,创建新文件
a追加。文件指针会放在文件的结尾,子女的内容会被写入到已有内容之后
rb以二进制格式打开一个文件用于只读(带b都是以二进制格式)
r+打开一个文件用于读写(带+的可读可写) ,没有该文件会报错,文件指针在开头
w+没有该文件会创建,文件指针在开头,用新内容覆盖原内容
a+没有文件会新建文件,文件指针在结尾,无法读取数据,因为文件指针后面没有数据
#打开/创建文件open()
f=open("test.txt","w")
#读写操作,write(),read()
f.write("aaa")   #写入内容
#关闭文件,不然会一直占用内存空间,close()
f.close()

结果如下:
在这里插入图片描述
2、读写

read()

语法:文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据

f=open("test.txt","r")
print(f.read())
f.close()
结果为: #就是test.txt的文件内容
aa
bb
cc
dd
ee

f=open("test.txt","r")
print(f.read(4))
f.close()
结果为:
aa
b
为什么输入的是4个字节,输出的缺是3个字节呢?
因为test.txt文件里换行了,换行符占用一个字节

readline()

readline()一次读取一行内容

f=open("test.txt")
content=f.readline()
print(content)
content1=f.readline()
print(content1)
f.close()
结果为:
aa
bb

3、seek()

用来移动文件指针
语法:文件对象.seek(偏移量,起始位置)
起始位置:
0:文件开头
1:当前位置
2:文件结尾

需求:r:改变文件指针位置,改变读取数据开始位置

f=open("test.txt","r+")
f.seek(2,0)
con=f.read()
print(con)
f.close()
结果为:
aa
bbbb
cccc
dddd

#将文件指针放结尾,读取不出来数据
f=open("test.txt","r+")
f.seek(0,2)
con=f.read()
print(con)
f.close()

对a访问模式来讲,改变文件指针位置,做到可以读取出来数据

f=open("test.txt","a+")
f.seek(0)
con=f.read()
print(con)
f.close()
结果为:
aaaa
bbbb
cccc
dddd

3、文件备份

需求:用户输入当前目录下任意文件名,程序完成对该文件的备份功能(备份文件名为xx[备份]后缀),例如:test[备份].txt

步骤:
1、接收用户输入的文件名
2、规划备份文件名
3、备份文件写入数据

实现代码如下:

old_name=input("请输入您要备份的文件名:")

index=old_name.rfind(".")  #从右向左查找.
yuan=old_name[:index]  #文件名
type=old_name[index:]   #文件后缀
#有效文件才备份,无效文件如:.txt
if index>0:
    postfix=type
new_name=yuan+"[备份]"+postfix
print(new_name)
#3、备份文件写入数据;
#打开源文件和备份文件,将源文件数据写入到备份文件,关闭文件
old_f=open(old_name,"rb")
new_f=open(new_name,"wb")
#源文件读取,备份文件写入,当读取的数据没有了就终止循环
while True:
    con=old_f.readline()
    if len(con)==0:  #当文件内容读完,为0时,就停止循环
        break
    new_f.write(con)

old_f.close()
new_f.close()

4、文件和文件夹的操作

在python中,文件和文件夹的操作要借助os模块里面的相关模块,具体步骤如下:
1、导入模块
import os
2、使用os模块相关功能
os.函数名( )

1、文件重命名

os.rename(目标文件名,新文件名)

import os
os.rename("1.txt","10.txt")

2、删除文件

remove(“目标文件名”)

import os
os.remove("10.txt")

文件夹操作

1、创建文件夹

import os
os.mkdir("aa")

2、删除文件夹

import os
os.rmdir("aa")

3、获取当前目录

import os
print(os.getcwd())
结果为:
C:\study python\test\day1

4、改变目录路径
需求:在aa目录里创建bb文件夹

import os
#os.mkdir("aa")
os.chdir("aa")
os.mkdir("bb")

5、获取目录列表

import os
print(os.listdir()) #获取某个文件夹下面的所有文件,并且返回一个列表

import os
print(os.listdir("aa")) #获取aa文件夹的所有文件

6、文件夹重命名

将aa目录重命名为cc
import os
os.rename("aa","cc")

7、应用案例
需求:把test文件夹的所有文件命名为"python_xxx"

import os
file_list=os.listdir()   #找到此目录下的所有文件
for i in file_list:
    new_name="python_"+i  #拼接新的名字
    os.rename(i,new_name)  #重命名操作

删除指定字符串:删除"python_"重命名
批量修改文件名,既可添加指定字符串,又能删除指定字符串

import os
flag=2   #1为添加字符串,2为删除字符串,可以自己定义
file_list=os.listdir()
for i in file_list:
    if flag==1:
        new_name="python_"+i
    elif flag==2:
        num=len("python_")
        new_name=i[num:]
    os.rename(i,new_name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>