os库主要是对文件和文件夹进行操作,在Python中对⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能。
具体步骤如下:
1. 导⼊os模块
import os
2. 使⽤ os 模块相关功能
os.函数名()
1、⽂件重命名
os.rename(⽬标⽂件名, 新⽂件名)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.listdir())
os.rename('./test_folder', './new_folder')
print(os.listdir())
运行结果;
2、创建文件
os.mknod('./new_file.txt') # Windows下不支持
示例代码:
import os
print(os.listdir())
# 新建文件(windows系统不支持,报错)
# os.mknod('./new_file.txt')
# windows下新建文件
f = open('./new_file2.txt', 'w', encoding='utf-8')
f.close()
3、删除⽂件
os.remove(⽬标⽂件名)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.listdir())
os.remove('./text.txt')
print(os.listdir())
运行结果:
4、创建⽂件夹
os.mkdir(⽂件夹名字)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.listdir())
os.mkdir('./test_folder')
print(os.listdir())
运行结果:
详见博文:Python创建目录文件夹_IT之一小佬的博客-CSDN博客
5、删除⽂件夹
os.rmdir(⽂件夹名字)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.listdir())
os.rmdir('./test_folder')
print(os.listdir())
运行结果:
6、获取当前⽬录
os.getcwd()
示例代码:
import os
print(os.getcwd())
运行结果:
7、改变默认⽬录
os.chdir(⽬录)
8、获取⽬录列表
os.listdir(⽬录)
示例代码:
import os
print(os.listdir())
运行结果:
9、返回路径的上一级路径字符串
os.path.dirname(path)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.dirname('./aa/python_test'))
print(os.path.dirname('./python_test'))
print(os.path.dirname(a))
运行结果:
10、返回路径的最后一级目录名(文件夹名)或文件名(全称)
os.path.basename(path)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.basename(a))
print(os.path.basename('./aa/python_test'))
print(os.path.basename('./python_test'))
运行结果:
11、返回文件名和其后缀组成的元组
os.path.splitext(file_name)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.splitext(a))
print(os.path.splitext('./aa/python_test'))
print(os.path.splitext('./python_test'))
print(os.path.splitext('./python_test.python'))
运行结果:
12、获取当前文件的绝对位置
os.path.abspath(__file__)
示例代码:
import os
current_path = os.path.abspath(__file__)
print(current_path)
current_folder = os.path.dirname(current_path)
print(current_folder)
运行结果:
13、返回当前工作目录的路径加上string组成的路径字符串
os.path.abspath(string)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.abspath(a))
print(os.path.abspath('./aa/python_test'))
print(os.path.abspath('./python_test'))
print(os.path.abspath('./python_test.python'))
运行结果:
14、判断一个路径是否是一个目录(文件夹)
os.path.isdir(path)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.isdir(a))
print(os.path.isdir('./aa/python_test'))
print(os.path.isdir('../111'))
print(os.path.isdir('./python_test.python'))
运行结果:
15、判断一个路径是否是一个文件
os.path.isfile(path)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.isfile(a))
print(os.path.isfile('./aa/python_test'))
print(os.path.isfile('../111'))
print(os.path.isfile('./python_test.py'))
print(os.listdir())
运行结果:
16、以列表的形式返回一个目录(dir_path只能是目录,不能是文件名路径)下的所有文件(全称)和文件夹名称
os.listdir(dir_path)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.listdir())
print(os.listdir('E:/代码/111'))
print(os.listdir('E:/代码/111/css'))
运行结果:
17、删除指定空目录(空文件夹)
os.removedirs(dir_path)
示例代码1:
import os
a = os.getcwd()
print(a)
print(os.listdir())
os.removedirs('./new_folder')
print(os.listdir())
运行结果:
示例代码2: 【必须是空文件夹】
import os
a = os.getcwd()
print(a)
print(os.listdir())
os.removedirs('./new_folder')
print(os.listdir())
运行结果:
18、判断一个路径是否存在
os.path.exists(path)
示例代码:
import os
a = os.getcwd()
print(a)
if os.path.exists(a):
print('path exist!')
else:
print('path not exist!')
if os.path.exists('E:/代码/111'):
print('path exist!')
else:
print('path not exist!')
if os.path.exists('E:/代码/111/new_path'):
print('path exist!')
else:
print('path not exist!')
运行结果:
19、返回path的真实路径
os.path.realpath(path)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.realpath('./python_test.py'))
运行结果:
20、路径拼接
os.path.join(path,name)
示例代码1:
import os
a = os.getcwd()
print(a)
b = os.path.join(a, 'works')
print(b)
运行结果:
示例代码2:
import os
print(os.path.join('xx', 'yy', 'zz'))
print(os.path.join('AA', 'BB', 'CC', 'DD'))
运行结果:
21、返回一个路径的目录名和文件名
os.path.split()
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.split(a))
print(os.path.split('E:/代码/111/index.html'))
运行结果:
22、获得文件属性
os.stat(file)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.stat(a))
print(os.stat('E:/代码/111/index.html'))
运行结果:
23、获得文件大小
os.path.getsize(name)
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.getsize(a))
print(os.path.getsize('E:/代码/111/index.html'))
运行结果:
24、判断是否为绝对路径
os.path.isabs()
示例代码:
import os
a = os.getcwd()
print(a)
print(os.path.isabs(a))
print(os.path.isabs('E:/代码/111/index.html'))
print(os.path.isabs('./index.html'))
运行结果:
25、获取环境变量中的值
使用os获取环境变量的值,通常是使用os.getenv("value"),也可以使用os.environ.get("value")。也能够直接在settings等文件中设置环境变量,使用os.environ["key"] = "value"。
详解博文:python获取环境变量中的值(Pycharm)_IT之一小佬的博客-CSDN博客
26、随机生成n个字节的字符串
os.urandom(n)的作用就是随机生成n个字节的字符串,可以作为随机加密的key使用。
示例代码1:
import os
aa = os.urandom(6)
print(aa)
bb = aa.decode('utf-8', 'ignore')
print(bb)
运行结果:
示例代码2:
import os
for _ in range(5):
print(os.urandom(6))
运行结果:
27、文件和文件夹操作应⽤案例
需求:批量修改⽂件名,既可添加指定字符串,⼜能删除指定字符串。
步骤
1. 设置添加删除字符串的的标识
2. 获取指定⽬录的所有⽂件
3. 将原有⽂件名添加/删除指定字符串,构造新名字
4. os.rename()重命名
示例代码1:
import os
# 获取指定⽬录
dir_name = './'
# 获取指定⽬录的⽂件列表
file_list = os.listdir(dir_name)
print(file_list)
运行结果:
示例代码2: 【把flag=1改为flag=2即为删除功能】
import os
# 设置重命名标识:如果为1则添加指定字符,flag取值为2则删除指定字符
flag = 1
# 获取指定⽬录
dir_name = './'
# 获取指定⽬录的⽂件列表
file_list = os.listdir(dir_name)
print(file_list)
# 遍历⽂件列表内的⽂件
for name in file_list:
# 添加指定字符
if flag == 1:
new_name = 'Python-' + name
# 删除指定字符
elif flag == 2:
num = len('Python-')
new_name = name[num:]
# 打印新⽂件名,测试程序正确性
print(new_name)
# 重命名
os.rename(dir_name + name, dir_name + new_name)
运行结果: