import os
# 遍历目录
def search_dir(path):
#列出指定路径的所有文件和文件架
filename_list = os.listdir(path)
for filename in filename_list:
# file_path: 每个子文件或子文件夹的绝对路径
file_path = os.path.join(path, filename)
# 如果是文件
if os.path.isfile(file_path):
print("文件名:", filename)
# 如果是目录
elif os.path.isdir(file_path):
print("目录名:", filename)
# 递归遍历当前目录的子目录
search_dir(file_path)
#要遍历的目录
search_dir(r'C:\Users\ijeff\Desktop\Python2003\day11\code\newdir')
import os
def getAll(path):
#1.获取当前目录下所有的文件以及文件夹
fileList = os.listdir(path)
#2.遍历列表
for i in fileList:
#3.拼接路径
filePath = os.path.join(path,i)
#4.判断filePath是否是文件夹
if os.path.isdir(filePath):
#文件夹:递归
getAll(filePath)
else:
#文件
print("文件:", i)
getAll(r"C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11\code")
包
初期理解为文件夹
包和文件夹之间的区别:
Python的包中有一个特殊的文件__int__.py文件,前期里面不写任何内容,但是,就是为了告诉编译器,当前这个目录不是普通目录,是一个包
创建方式:
选中工程,创建Python package
a. 模块
每一个.py文件就是一个模块
b. 封装思路:
函数 ==> 类 ==> 模块 ==> 包 ==> 项目
c. 类别
1.内置模块:Python提供的模块
2.自定义模块: 自己写的模块
3.第三方模块: 别人写的模块
a. 概念:
提供有关操作系统的函数,处理文件或者文件夹
语法:
import os
print(os. name)
‘’’
nt----->Windows
posix------>Linux, Mac os
‘’’
语法:
import os
print(os.environ)
print(os.environ.get(‘PATH’))
语法:
import os
print(os. getcwd())
语法:
import os
print(os. listdir(‘绝对路径名’))
(注意:返回的是一个列表)
语法:
import os
print(os.mkdir(‘文件夹名’))
#创建一个名字为———— 的文件夹
语法:
import os
print(os.makedirs(‘递归的目录名’))
#path——需要递归创建的目录,可以是 “/tmp/home/monthly/daily” 这样
#执行这句代码,就会生成n个文件夹
语法:
import os
print(os.rmdir(‘目录名’))
(除单级空目录,若目录不为空则无法删除)
语法:
import os
print(os.removedir(‘递归的目录名’))
(方法用于递归删除目录。像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹)
语法:
import os
print(os. remove(‘文件名’))
语法:
import os
os.rename(old_name,new_name)
‘’’
old_name——要修改的文件名/目录名
new_name——修改后的文件名目录名
‘’’
语法:
import os
print(os.curdir) #直接使用返回 .
#(’.’)表示当前路径
print(os.path.abspath(os.curdir))
#与os.getcwd()结果
语法:
import os
print(os.pardir) #直接使用返回 …
print(os.path.abspath(os.pardir)) #上级目录
#(’…’)表示父目录
文件属性(了解)
print(os.stat(‘文件名’))
语法:
import os
os.path.join(‘路径1’,‘路径2’,‘路径3’…)
语法:
import os
os.path.split(‘绝对路径’)
import os
os.path.split('C:\\Users\\Users\\ijeff\\Desktop\\Python2004\\day11\\code')
#('C:\\Users\\Users\\ijeff\\Desktop\\Python2004\\day11', 'code')只拆分当前文件夹
语法:
import os
print(os.path.splitext(‘文件名. 扩展名’)
import os
print(os.path.splitext(‘aaa.py’)
# => ('aaa', '.py') 返回元组
(分割路径,返回路径名和文件扩展名的元组)
语法:
import os
os.path.getsize('文件路径‘):
import os
print(os.path.getsize(r'C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11\code\02_os模块_下.py'))
#返回XXXX
语法:
import os
os.path.abspath('文件名’):
import os
print(os.path.abspath('a.txt'))
print(os.path.abspath(__file__)) #__file__: 当前文件名
语法:
dir_path = r’C:\Users\ijeff\Desktop\Python2004\day11\code’
file_path = r’C:\Users\ijeff\Desktop\Python2004\day11\code\02_os模块.py’
print(os.path.exists(dir_path))
print(os.path.exists(file_path))
print(os.path.isfile(dir_path))
print(os.path.isfile(file_path))
print(os.path.isdir(dir_path))
print(os.path.isdir(file_path))
print(os.path.dirname(dir_path))
print(os.path.basename(file_path))
import os
dir_path = r'C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11\code'
file_path = r'C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11\code\02_os模块_下.py'
# os.path.dirname(): 父目录
print(os.path.dirname(dir_path))
#C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11
# os.path.basename(): 文件名
print(os.path.basename(file_path) #02_os模块_下.py
当通过import将模块导入的时候,将模块对应的文件整个加载了一遍
当导入自定义模块的时候,需要注意包的存在
3.当模块有包的层级关系时,需要调用其中函数的时候,需要指明函数的路径
格式:
import 包
import 包.模块
#调用内置模块
import os
#调用多个内置模块
import os, math, random
#调用自定义模块,需要先调入包
#前提:当前文件必须和调用的包的目录为同一等级
import 包名. 模块名
使用from…import…可以精确的调用模块中的指定函数,而不用把整个模块进行读取
#精确的调用模块中的指定函数
from 包名.模块名 import 函数名1,函数名2...
#调用包中的某个模块
from 包名 import 模块名
#__name__的作用:如果不想让模块中的某些代码执行,可以通过属性仅仅调用程序中的一部分功能
#【写在if判断中的代码只有当前模块被执行的时候才会被执行,检测到是其他的文件在使用当前的模块,则if语句中的代码不会被执行】
def fun1():
print("aaa")
def fun2():
print("bbb")
def fun3():
print("ccc")
#作用:写在下面判断中的代码,只有当前模块运行的时候才会被执行【起到屏蔽的作用】
if __name__ == "__main__":
fun1()
fun2()
fun3()
import math,moduleTextDemo01
#获取指定模块里面的所有的内容
#dir(模块名称) 返回的是一个列表
print(dir(math))
print(dir(moduleTextDemo01))