【一】导入模块
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) 自动创建不存在的多级文件夹路径
标签:__,模块,py,学习,file,print,path,os
From: https://www.cnblogs.com/ligo6/p/18182394