python(14)OS模块、文件及os模块总结、持久化保存

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='')

 

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