OS(Operation System)操作系统模块
一、OS Path模块中的常用函数
import os
#isabs() 是否是绝对路径 D:\...\...\...\.后缀名
r = os.path.isabs(r'D:\JY\test\Tulips.jpg')
print('--->', r)
#相对路径 本目录中文件夹
r = os.path.isabs('intest/Tulips.jpg')
print('--->', r)
# .. 当前文件的上一级目录
r = os.path.isabs('../intest/Tulips.jpg') #返回当前文件test2.py文件的上一级,直到找到指定jpg文件
print('--->', r)
#获取当前文件所在文件夹路径 dirname——directory目录
#获取的是绝对路径
path = os.path.dirname(__file__)
print(path)
#给的相对路径,返回绝对路径 aa.txt需要与当前文件同目录
path = os.path.abspath('aa.txt')
print(path)
#获取当前文件的绝对路径
path = os.path.abspath(__file__)
print(path)
#当前文件所在工作目录 类似于os.path.dirname(__file__)
path = os.getcwd()
print(path)
#分割获取文件路径及文件名 结果为(文件目录, 文件名)
path = r'd:\JY\workspace\PracticeProject\PythonProject\test2.py'
result = os.path.split(path)
print(result)
print(result[1]) #获取文件名
#分割文件和扩展名 (文件, 扩展名)
result = os.path.splitext(path)
print(result)
#获取文件的大小
size = os.path.getsize(path)
print(size) #单位是 字节
#路径拼接,可以拼接多个
result = os.path.join(os.getcwd(), 'file', 'a1.jpg')
print(result)
总结:os.path中常用函数
dirname() 文件夹名
join() 拼接路径
split() 分割文件路径及文件名
splitext() 分割文件和扩展名
getsize() 获取文件的大小
isabs() 是否是绝对路径
isfile() 是否是文件
isdir() 是否是文件夹
二、OS模块常用函数
import os
#返回指定目录下所有文件及文件夹的名字
all = os.listdir(r'D:\JY\test')
print(all) #所有文件及文件夹名字保存到列表里面
#创建文件夹
if not os.path.exists(r'D:\JY\test2'):
f = os.mkdir(r'D:\JY\test2') #文件已经存在则报错FileExistsError
print(f)
#删除文件夹 只能删除空的文件夹,文件夹中有文件,则报错OSError 目录不是空的
f = os.rmdir(r'D:\JY\test2')
print(f)
#删除多个目录 要删的目录中如果有文件或文件夹,则会报错OSError 目录不是空的
os.removedirs(r'D:\JY\test2')
#删除文件
os.remove(r'D:\JY\test2\aaa.txt')
例子:
import os
#例: 删除test2文件夹
path = r'D:\JY\test2'
filelists = os.listdir(path)
for filename in filelists:
#文件夹中所有文件并删除文件
path1 = os.path.join(path, filename)
os.remove(path1)
else:
#文件删除成功,删除文件夹
os.rmdir(path)
print("删除成功!")
#切换目录
f = os.chdir(r'D:\JY\test')
print(f)
path = os.getcwd() #切换后获取工作路径
print(path)
总结:os模块下的方法
os.getcwd() 获取当前工作目录
os.listdir() 浏览文件夹
os.mkdir() 创建文件夹
os.rmdir() 删除空的文件夹
os.remove() 删除文件
os.chdir() 切换目录
三、OS模块文件操作
1、将原文件夹中的文件复制到指定文件夹中
import os
src_path = r'D:\JY\test'
target_path = r'D:\JY\test1'
#复制函数 将原文件夹中文件复制到指定文件夹中
def copy(src, target):
if os.path.isdir(src) and os.path.isdir(target):
filelist = os.listdir(src) #获取文件夹中所有文件
for f in filelist:
path = os.path.join(src, f)
with open(path, 'rb') as fsteam:
container = fsteam.read()
t_file_path = os.path.join(target, f)
with open(t_file_path, 'wb') as wstream:
wstream.write(container)
else:
print("复制完毕")
copy(src_path, target_path)
2、将原文件夹中文件(包含子文件夹),复制到指定文件夹中
#复制文件夹中文件到指定文件夹
#原文件夹中有文件夹
import os
src_path = r'D:\JY\test'
target_path = r'D:\JY\test2'
print("------------------------------")
def copy(src, target):
if not os.path.isdir(target):
os.mkdir(target)
if os.path.isdir(src_path) and os.path.isdir(target):
#获取原文件夹中文件
filelists = os.listdir(src)
if len(filelists) > 0:
#遍历文件列表
for f in filelists:
#拼接路径
path = os.path.join(src, f)
#判断是文件夹还是文件
if os.path.isdir(path):
#是文件夹,递归调用,重新操作里面的文件夹
#里面的文件夹需要新建 D:\JY\test\ppp
inner_dir = os.path.join(target, f)
os.mkdir(inner_dir)
copy(path, inner_dir)
else:
#是文件,将文件直接复制
with open(path, 'rb') as fstream:
container = fstream.read()
t_file_path = os.path.join(target, f)
with open(t_file_path, 'wb') as wstream:
wstream.write(container)
else:
print("复制完成")
copy(src_path, target_path)
四、文件及OS模块总结
文件操作
open(path, mode)
path, filename
path: 绝对路径 D:\JY\...
相对路径 相对当前文件的路径,返回上层目录: ../
mode
读: rb
写: wb
stream = open(filepath, mode)
stream.read()
stream.write()
stream.close()
with open(filepath, mode) as stream:
文件操作代码
os模块(operation system 操作系统模块)
os.path 常用函数:
dirname() 获取指定文件的目录
join() 拼接获取新的目录
split() 分割为目录和文件名
splitext() 分割为文件和扩展名
getsize() 获取文件大小
isabs() 是否是绝对路径
isfile() 是否是文件
isdir() 是否是文件夹
os常用函数:
os.getcwd() 获取当前工作目录
os.listdir() 浏览文件夹
os.mkdir() 创建文件夹
os.rmdir() 删除空的文件夹
os.remove() 删除文件
os.chdir() 切换目录
五、数据持久化保存
列表list 元组tuple 字典dictionary ——>内存
例:图书馆系统,用户注册、用户登录、查看图书馆中图书数据
#用户注册
def register():
username = input("请输入用户名:")
password = input("请输入密码:")
repassword = input("请输入确认密码:")
if password == repassword:
#保存信息
#a 追加内容
with open(r'D:\JY\test\user_info.txt', 'a') as wstream:
wstream.write('{} {}\n'.format(username, password))
print('用户注册成功!')
else:
print('密码不一致!')
#用户登录
def login():
username = input("请输入用户名:")
password = input("请输入密码:")
if username and password:
with open(r'D:\JY\test\user_info.txt', 'rb') as fstream:
while True:
user = fstream.readline()
if not user:
print("用户名或密码错误!")
break
input_user = '{} {}'.format(username, password)
if user == input_user:
print("用户登录成功!")
break
#读取图书信息
def show_books():
print("----------图书馆里面的图书有:-----------")
with open(r'D:\JY\test\book_info.txt', 'rb') as fstream:
books = fstream.readlines()
for book in books:
print(book, end='')