模块学习之os模块

【一】导入模块

import os

【二】文件路径相关操作

  • _file__指当前文件

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

import os

file_path = os.path.abspath(__file__)
print(file_path)
# D:\Python\pythonProject\pythonProject1\demo7.py

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

import os

file_path = os.path.dirname(__file__)
print(file_path)
# D:\Python\pythonProject\pythonProject1

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

import os

file_path = os.path.abspath(__file__)
is_path = os.path.exists(file_path)
print(is_path)
# True

#制定一个不存在的路径
is_path = os.path.exists(r'D:\Python\pythonProject\pythonProject2')
print(is_path)
# False

(4)拼接文件路径(join)

import os

file_path = os.path.dirname(__file__)
print(file_path)
# D:\Python\pythonProject\pythonProject1
# join 后面可以跟多个路径
new_file_path = os.path.join(file_path,'img')
print(new_file_path)
# D:\Python\pythonProject\pythonProject1\img

(5)切割路径(split)

import os

file_path = os.path.abspath(__file__)
# 对路径进行切割 --- 切割成元组
path_split = os.path.split(file_path)
print(path_split)
# ('D:\\Python\\pythonProject\\pythonProject1', 'demo7.py')

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

import os

# 获取结尾文件夹名
file_path = os.path.dirname(__file__)
print(os.path.basename(file_path))
# pythonProject1

# 获取结尾文件名
file_path = os.path.abspath(__file__)
print(os.path.basename(file_path))
# demo7.py

(7)当前路径是否是文件(isfile)

import os

# 【1】
file_path = os.path.dirname(__file__)
print(os.path.isfile(file_path))
# False

# 【2】
file_path = os.path.abspath(__file__)
print(os.path.isfile(file_path))
# True

(8)当前路径是否为绝对路径(isabs)

import os

# 【1】
file_path = 'D:\\Python\\pythonProject\\pythonProject1'
print(os.path.isabs(file_path))
# True

# 【2】
file_path = '../demo7.py'
print(os.path.isabs(file_path))
# False

(9)当前文件目录是否存在(isdir)

import os

# 【1】
file_path = 'D:\\Python\\pythonProject\\pythonProject1'
print(os.path.isdir(file_path))
# True

# 【2】
file_path = '../demo7.py'
print(os.path.isdir(file_path))
# False

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

import os, time

base_dir = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
dir_time = os.path.getatime(base_dir)
print(time.strftime("%Y-%m-%d %X", time.localtime(dir_time)))
# 2024-04-19 20:26:10

file_time = os.path.getatime(file_path)
print(time.strftime("%Y-%m-%d %X", time.localtime(file_time)))
# 2024-04-19 20:26:10

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

import os, time

base_dir = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
dir_time = os.path.getctime(base_dir)
print(time.strftime("%Y-%m-%d %X", time.localtime(dir_time)))
# 2024-03-28 11:48:15

file_time = os.path.getctime(file_path)
print(time.strftime("%Y-%m-%d %X", time.localtime(file_time)))
# 2024-04-08 12:12:05

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

import os, time

base_dir = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
dir_time = os.path.getmtime(base_dir)
print(time.strftime("%Y-%m-%d %X", time.localtime(dir_time)))
# 2024-04-19 20:28:29

file_time = os.path.getmtime(file_path)
print(time.strftime("%Y-%m-%d %X", time.localtime(file_time)))
# 2024-04-19 20:28:29

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

import os

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

print(os.path.getsize(base_dir))  # 4096
print(os.path.getsize(file_path))  # 6512

【三】文件和文件夹操作

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

  • 只能创建单级文件目录,多级就会报错
import os

base_dir = os.path.dirname(__file__)
file_path = os.path.join(base_dir, 'file')
print(os.path.exists(file_path)) # False
if not os.path.exists(file_path):
    os.mkdir(file_path)
print(os.path.exists(file_path))  # True
print(file_path)
# D:\Python\pythonProject\pythonProject1\file

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

import os

base_dir = os.path.dirname(__file__)
file_path = os.path.join(base_dir, 'file', 'file_log')
print(os.path.exists(file_path)) # False
if not os.path.exists(file_path):
    os.mkdir(file_path)
print(os.path.exists(file_path))  # True
print(file_path)
# D:\Python\pythonProject\pythonProject1\file\file_log

(3)删除多级文件夹(removedirs)

# 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
import os

base_dir = os.path.dirname(__file__)
file_path = os.path.join('file', 'file_log')
true_file_path = os.path.join(base_dir, file_path)
print(os.path.exists(true_file_path))  # True
os.removedirs(file_path)
print(os.path.exists(true_file_path))  # False

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

import os

base_dir = os.path.dirname(__file__)
file_path = os.path.join('file', 'file_log')
true_file_path = os.path.join(base_dir, file_path)
print(os.path.exists(true_file_path))  # True
os.rmdir(file_path)
print(os.path.exists(true_file_path))  # False

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

import os

file_name = os.path.dirname(__file__)
file_list = os.listdir(file_name)
print(file_list)
# ['.idea', '.venv', '01.text', '02.text', '1.py', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'File', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

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

import os

base_dir = os.path.dirname(__file__)

print(os.listdir(base_dir))
# ['.idea', '.venv', '01.text', '02.text', '1.py', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'File', 'file.py', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

file_path = os.path.join(base_dir,'file.py')
os.remove(file_path)
print(os.listdir(base_dir))
# ['.idea', '.venv', '01.text', '02.text', '1.py', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'File', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

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

import os

base_dir = os.path.dirname(__file__)

print(os.listdir(base_dir))
# ['.idea', '.venv', '01.text', '02.text', '1.py', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'File', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

file_path = os.path.join(base_dir, '1.py')
file_file_path = os.path.join(base_dir, 'file')
os.rename(file_path, '01.py')
os.rename(file_file_path, 'file1')
print(os.listdir(base_dir))
# ['.idea', '.venv', '01.py', '01.text', '02.text', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'file1', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

(8)获取文件夹/文件详细信息(stat)

import os

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

print(os.stat(base_dir))
# os.stat_result(st_mode=16895, st_ino=1125899906989062, st_dev=1569959328, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1713530941, st_mtime=1713530930, st_ctime=1711597695)
print(os.stat(file_path))  
# os.stat_result(st_mode=33206, st_ino=844424930290280, st_dev=1569959328, st_nlink=1, st_uid=0, st_gid=0, st_size=6871, st_atime=1713530941, st_mtime=1713530930, st_ctime=1712549525)

# stat 结构:
# st_mode: inode 保护模式
# st_ino: inode 节点号
# st_dev: inode 驻留的设备
# st_nlink: inode 的链接数
# st_uid: 所有者的用户ID
# st_gid: 所有者的组ID
# st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据
# st_atime: 上次访问的时间
# st_mtime: 最后一次修改的时间
# st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)

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

import os

# 获取当前工作目录
file_path = os.getcwd()
print(file_path)
# D:\Python\pythonProject\pythonProject1

(10)切换当前工作目录(chdir)

import os

base_dir = os.path.dirname(__file__)
file_path = os.getcwd()
print(file_path)
# D:\Python\pythonProject\pythonProject1

new_file_path = os.path.join(base_dir,'file')
os.chdir(new_file_path)
print(os.getcwd())
# D:\Python\pythonProject\pythonProject1\file

(11)运行shell命令

import os
#【1】直接显示
os.system("ping www.baidu.com")

#【2】获取执行结果
print(os.popen("ping www.baidu.com"))
# <os._wrap_close object at 0x000002276726B0D0>

【四】属性操作

import os
#【1】输出操作系统特定的路径分隔符(sep)
print(os.sep)
# \
# win下为 ""
# Linux下为 "/"

#【2】输出当前平台使用的行终止符(linesep)
print(os.linesep)
# win下为 "\r\n"
# Linux下为 "\n"

#【3】输出用于分割文件路径的字符串(pathsep)
print(os.pathsep)
# ;
# win下为 ";"
# Linux下为 ":"

#【4】输出字符串指示当前使用平台(name)
print(os.name)
# nt
# win下为 'nt'
# Linux下为 'posix'

【五】重点

# os.path.join() 拼接路径
# os.path.dirname(__file__) 获取当前文件所在的文件夹路径
# os.path.abspath(__file__)获取当前文件所在的文件路径
# os.path.exists() 判断路径是否存在
# os.mkdir() 创建单级文件夹
# os.makedirs() 创建多级文件夹
# os.makedirs(path, exist_ok=True) 自动创建不存在的多级文件夹路径
posted @   Ligo6  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示