os模块

发布时间 2023-12-16 13:38:36作者: ssrheart

os模块

【一】文件操作

(1)导入模块

import os

(2)获取当前文件路径(abspath)

  • abspath
file_path = os.path.abspath(__file__)

(3)获取当前文件所在文件夹的路径(dirname)

  • dirname
base_dir = os.path.dirname(__file__)

(4)判断当前路径是否存在(exists)

# 指定一个存在的路径
path_one = 'D:\2023propygo\ATM.py'
base_dir = os.path.exists(path_one)
print(base_dir)# True

# 指定一个不存在的路径
path_one = 'D:\2023propygo'
base_dir = os.path.exists(path_one)
print(base_dir)# False

(5)拼接路径(join)

  • join后面可以跟多个路径
path=os.path.join(r'D:\2023propygo\day\day15\day15','无参装饰器练习.py')

base_dir = os.path.dirname(__file__)
path= os.path.join(base_dir,'img')

(6)切割路径(split)

import os

# 获取当前文件所在路径
BASE_DIR = os.path.abspath(__file__)
# 对路径进行切割 --- 切割成元组
file_path_list = os.path.split(BASE_DIR)
print(file_path_list) # ('D:\\2023propygo', 'test.py')

(7)获取结尾文件/文件夹名(basename)

import os

BASE_DIR = os.path.dirname(__file__)

file_path = os.path.join(BASE_DIR, 'img')
print(file_path)  # D:\2023propygo\img

# 返回path最后的文件名
# 如何 path以/或\结尾,那么就会返回空值。
# 即 os.path.split(path) 的第二个元素
a = os.path.basename(file_path)
print(a)  # img

# 获取当前文件路径
file_path_one = os.path.abspath(__file__)
print(file_path_one)  # D:\2023propygo\test1.py

print(os.path.basename(file_path_one))  # test1.py

(8)判断当前路径是否是文件(isfile)

import os

BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)  # D:\2023propygo

file_path = os.path.abspath(__file__)
print(file_path)  # D:\2023propygo\test1.py

is_true_one = os.path.isfile(BASE_DIR)
print(is_true_one)  # False

is_true_two = os.path.isfile(file_path)
print(is_true_two)  # True

(9)判断当前路径是否为绝对路径(isabs)

import os

file_path_one = r'D:\2023propygo\ATM.py'
file_path_two = r'test.py'

is_true_one = os.path.isabs(file_path_one)
print(is_true_one)  # True

is_true_two = os.path.isabs(file_path_two)
print(is_true_two)  # False

(10)判断当前文件目录是否存在(isdir)

import os

file_path_one = r'D:\2023propygo\day\test.py'
file_path_two = r'test.py'

is_true_one = os.path.isdir(file_path_one)
print(is_true_one) # False


is_true_two = os.path.isdir(file_path_two)
print(is_true_two) # False

(11)获取当前文件或目录的最后访问时间(getatime)

import os, time

BASE_DIR = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)

file_base_time = os.path.getatime(BASE_DIR)
print(file_base_time)  # 1700898377.9336035
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_base_time)))
# 2023-11-25  15-46-17

file_time = os.path.getatime(file_path)
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_time)))
# 2023-11-25  15-46-17

(12)获取当前文件或者目录的创建时间(getctime)

import os, time

BASE_DIR = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)

file_base_time = os.path.getctime(BASE_DIR)
print(file_base_time)  # 1700831862.5625432
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_base_time)))
# 2023-11-24  21-17-42

file_time = os.path.getctime(file_path)
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_time)))
# 2023-11-25  14-41-54

(13)返回当前文件或路径的最后修改时间(getmtime)

import os, time

BASE_DIR = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)

file_base_time = os.path.getmtime(BASE_DIR)
print(file_base_time)  # 1700831862.5625432
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_base_time)))
# 2023-11-25  15-50-19

file_time = os.path.getmtime(file_path)
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_time)))
# 2023-11-25  15-50-19

(14)返回当前文件的大小(getsize)

import os

BASE_DIR = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)

file_base_time = os.path.getsize(BASE_DIR)
print(file_base_time)  # 0

file_time = os.path.getsize(file_path)
print(file_time)  # 4969

【二】路径操作

(1)创建单级文件夹(mkdir)

import os

BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)  # D:\2023propygo\day

file_name = 'img'
file_path = os.path.join(BASE_DIR, file_name)
print(file_path)  # D:\2023propygo\day\img

# 判断当前是否存在 file_path 指定路径
if not os.path.exists(file_path):
    # 不存在则新建 路径 (只能创建文件夹)
    os.mkdir(file_path)
    print(f"{file_path} :>>> 已创建")  # D:\2023propygo\day\img :>>> 已创建

print(f"当前路径 :>>>> {os.path.exists(file_path)}")  # 当前路径 :>>>> True

(2)创建多级文件夹(makedirs)

import os

BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)  # D:\2023propygo\day

file_path = os.path.join(BASE_DIR, 'img', '4k')
print(file_path)  # D:\2023propygo\img\4k

if not os.path.exists(file_path):
    # 多级文件夹创建使用 makedirs
    os.makedirs(file_path)
    print(f"{file_path} :>>> 已创建")  # D:\2023propygo\img\4k :>>> 已创建

print(f"当前路径 :>>>> {os.path.exists(file_path)}")  # 当前路径 :>>>> True

(3)删除单级文件夹(rmdir)

import os

BASE_DIR = os.path.dirname(__file__)

file_name = 'img'
file_path = os.path.join(file_name, '4k')
print(file_path)

file_true_path = os.path.join(BASE_DIR, file_path)
print(os.path.exists(file_true_path))

# 如果文件路径存在会从最后开始删,只删一级
os.rmdir(file_path)

print(os.path.exists(file_true_path))

(4)删除多级文件夹

  • 前提是文件夹里没有文件
import os

BASE_DIR = os.path.dirname(__file__)

file_path = os.path.join(BASE_DIR,'img','4k')
print(file_path)

print(os.path.exists(file_path))

os.removedirs(file_path)
print(os.path.exists(file_path))

(5)列出当前文件夹下的所有文件及文件夹(listdir)

  • 只能列出一级文件夹,看不到别的文件夹内的东西
import os

BASE_DIR = os.path.dirname(__file__)
file_list = os.listdir(BASE_DIR)
print(file_list)
# ['ATM', 'ATM.py', 'ATM1','test.py', 'test1.py']

(6)删除指定文件(remove)

import os

BASE_DIR = os.path.dirname(__file__)

file_list_one = os.listdir(BASE_DIR)
print(file_list_one)
# ['ATM', 'ATM.py', 'ATM1','test.py', 'test1.py']

file_path = os.path.join(BASE_DIR, 'test.py')
os.remove(file_path)

file_list_two = os.listdir(BASE_DIR)
print(file_list_two)
# ['ATM', 'ATM.py', 'ATM1','test1.py']

(7)重命名文件夹/文件(rename)

import os

BASE_DIR = os.path.dirname(__file__)

file_list_one = os.listdir(BASE_DIR)
print(file_list_one)
# ['ATM', 'ATM.py', 'ATM1','test.py', 'img']

file_path = os.path.join(BASE_DIR, 'test.py')
img_file_path = os.path.join(BASE_DIR, 'img')
os.rename(file_path, 'my_test.py')
os.rename(img_file_path, 'my_img')

file_list_two = os.listdir(BASE_DIR)
print(file_list_two)
# ['ATM', 'ATM.py', 'ATM1','my_test.py', 'my_img']

(8)获取当前工作目录(getcwd)

import os

# 获取当前工作目录,即当前python脚本工作的目录路径
file_path = os.getcwd()
print(file_path)  # D:\2023propygo

(9)改变当前工作目录(chdir)

import os

BASE_DIR = os.path.dirname(__file__)

# 获取当前工作目录,即当前python脚本工作的目录路径
file_path = os.getcwd()
print(file_path)
# D:\2023propygo

img_file_path = os.path.join(BASE_DIR, 'img')
os.chdir(img_file_path)

file_path_new = os.getcwd()
print(file_path_new) # D:\2023propygo\img