Python 的 os
库提供了与操作系统交互的功能,如文件和目录操作、环境变量访问、进程管理等。它允许程序执行路径操作、文件权限更改、系统信息获取等。os
库使得Python程序能够与底层操作系统紧密协作,执行系统级任务,是开发跨平台应用时不可或缺的工具。
文件夹路径图
ospag
├── dirname
├── dirname1
│ └── dirname2
└── os_test.py
分类 | 方法 | 中文 | Win | Linux | Mac |
---|---|---|---|---|---|
操作系统信息 | linesep = os.linesep |
输出当前平台使用的行终止符 | \t\n |
\n |
\n |
操作系统信息 | pathsep = os.pathsep |
输出用于分割文件路径的字符串 | ; |
: |
: |
操作系统信息 | name = os.name |
输出字符串指示当前使用平台 | nt |
posix |
posix |
环境变量 | environ_keys = os.environ.keys() |
系统全部环境变量 | KeysView(environ({'KEY': 'VALUE',...})) |
KeysView(environ({'KEY': 'VALUE',...})) |
KeysView(environ({'KEY': 'VALUE',...})) |
环境变量 | environ_setdefault = os.environ.setdefault("key_name", "value") |
设置系统环境变量 | |||
环境变量 | environ_get = os.environ.get("key_name") |
获取系统环境变量 | |||
环境变量 | environ_update = os.environ["key_name"] = value2 |
修改系统环境变量 | |||
环境变量 | del(os.environ["key_name"]) |
删除系统环境变量 | |||
路径 | path = os.getcwd() |
当前工作目录 | C:\Users\xxx\Desktop\ospag |
/home/xxx/ospag |
/Users/xxx/Desktop/ospag |
路径 | p = os.sep |
系统路径分隔符 | \ |
/ |
/ |
路径 | abspath = os.path.abspath(path) |
文件绝对路径 | C:\Users\xxx\Desktop\ospag |
/home/xxx/ospag |
/Users/xxx/Desktop/ospag |
路径 | path_split = os.path.split(path) |
path分割成目录和文件名二元组返回 | ('C:\\Users\\xxx\\Desktop', 'ospag') |
('/home/xxx', 'ospag') |
('/Users/xxx/Desktop', 'ospag') |
路径 | dirname = os.path.dirname(path) |
目录(文件夹)绝对路径 | C:\Users\xxx\Desktop |
/home/xxx |
/Users/xxx/Desktop |
路径 | basename = os.path.basename(path) |
返回path最后的文件名 | ospag |
ospag |
ospag |
路经检查 | exists = os.path.exists(path) |
路径是否存在 | True/False | ||
路经检查 | isabs = os.path.isabs(path) |
如果path是绝对路径 | True/False | ||
路经检查 | isfile = os.path.isfile(path) |
如果path是一个存在的文件 | True/False | ||
路经检查 | isdir = os.path.isdir(path) |
如果path是一个存在的目录(文件夹) | True/False | ||
目录(文件夹)生成 | os.mkdir('dirname') |
生成单级目录(文件夹) 相当于shell中mkdir dirname | 无返回, 如果已经有目录(文件夹)就报错 | ||
目录(文件夹)生成 | os.makedirs('dirname1/dirname2') |
可生成多层递归目录(文件夹) | 无返回, 如果已经有目录(文件夹)就报错 | ||
组合路径 | path_join = os.path.join( path1[, path2[, ...]]) |
将多个路径组合后返回 第一个绝对路径之前的参数将被忽略 | `` | `` | `` |
文件信息 | listdir = os.listdir('dirname') |
列出指定目录下的所有文件和子目录, 包括隐藏文件,并以列表方式打印 | ['os_test.py'] |
['os_test.py'] |
['os_test.py'] |
文件信息 | stat = os.stat('path/filename') |
获取文件/目录信息 | os.stat_result(st_mode=16877, st_ino=111537267, st_dev=16777223, st_nlink=6, st_uid=501, st_gid=20, st_size=192, st_atime=1654416456, st_mtime=1654406254, st_ctime=1654406254) |
os.stat_result(st_mode=16877, st_ino=111537267, st_dev=16777223, st_nlink=6, st_uid=501, st_gid=20, st_size=192, st_atime=1654416456, st_mtime=1654406254, st_ctime=1654406254) |
os.stat_result(st_mode=16877, st_ino=111537267, st_dev=16777223, st_nlink=6, st_uid=501, st_gid=20, st_size=192, st_atime=1654416456, st_mtime=1654406254, st_ctime=1654406254) |
文件信息 | fsize = os.path.getsize(path) |
文件字节大小 | 0(int类型) |
4096(int类型) |
192(int类型) |
文件信息 | getatime = os.path.getatime(path) |
返回path所指向的文件或者 目录的最后存取时间 | 1654416456.911321 |
1654416456.911321 |
1654416456.911321 |
文件信息 | getmtime = os.path.getmtime(path) |
返回path所指向的文件或者 目录的最后修改时间 | 1654416456.911321 |
1654416456.911321 |
1654416456.911321 |
文件操作 | rename = os.rename( "oldname", "newname") |
重命名文件/目录 | `` | `` | `` |
文件操作 | os.remove() |
删除一个文件 | `` | `` | `` |
chdir = os.chdir("dirname") |
改变当前脚本工作目录;相当于shell下cd | `` | `` | `` | |
curdir = os.curdir |
返回当前目录: (‘.’) | `` | `` | `` | |
pardir = os.pardir |
获取当前目录的父目录字符串名:(‘..’) | `` | `` | `` | |
removedirs = os.removedirs('dirname1') |
若目录为空,则删除,并递归到上一级目录, 如若也为空,则删除,依此类推 | `` | `` | `` | |
rmdir = os.rmdir('dirname') |
删除单级空目录,若目录不为空则无法删除,报错; 相当于shell中rmdir dirname | `` | `` | `` | |
system = os.system("bash command") |
运行shell命令,直接显示 | `` | `` | `` | |
normpath = os.path.normpath( os.path.join ( os.path.abspath(__file__) ,'..','..','..')) |
表示返回当前文件的上上上层目录 | `` | `` | `` |
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
import os
linesep = os.linesep
print("输出当前平台使用的行终止符,win下为”\t\n”,Linux下为”\n”")
print(linesep)
pathsep = os.pathsep
print("输出用于分割文件路径的字符串 win下为;,Linux下为:")
print(pathsep)
name = os.name
print("输出字符串指示当前使用平台。win->’nt’; Linux->’posix’")
print(name)
environ_keys = os.environ.keys()
print("系统全部环境变量")
print(environ_keys)
## environ_setdefault = os.environ.setdefault("key_name", "value")
## print("设置系统环境变量")
## print(environ_setdefault)
## environ_get = os.environ.get("key_name")
## print("获取系统环境变量")
## print(environ_get)
## environ_update = os.environ["key_name"] = value2
## print("修改系统环境变量")
## print(environ_update)
## # del(os.environ["key_name"])
## # print("删除系统环境变量")
path = os.getcwd()
print("当前工作目录")
print(path)
p = os.sep
print("系统路径分隔符")
print(p)
abspath = os.path.abspath(path)
print("文件绝对路径")
print(abspath)
path_split = os.path.split(path)
print("path分割成目录和文件名二元组返回")
print(path_split)
dirname = os.path.dirname(path)
print("文件夹绝对路径")
print(dirname)
basename = os.path.basename(path)
print("返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即`os.path.split(path)的第二个元素")
print(basename)
exists = os.path.exists(path)
print("路径是否存在:True/False")
print(exists)
isabs = os.path.isabs(path)
print("如果path是绝对路径,返回True")
print(isabs)
isfile = os.path.isfile(path)
print("如果path是一个存在的文件,返回True。否则返回False")
print(isfile)
isdir = os.path.isdir(path)
print("如果path是一个存在的目录,则返回True。否则返回False")
print(isdir)
## os.mkdir('dirname')
## print("生成单级目录(文件夹) 相当于shell中mkdir dirname, 无返回,如果已经有目录(文件夹)就报错")
## os.makedirs('dirname1/dirname2')
## print("生成多层递归目录")
## path_join = os.path.join(path1[, path2[, ...]])
## print("将多个路径组合后返回 第一个绝对路径之前的参数将被忽略")
## print(path_join)
listdir = os.listdir(path)
print("列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印")
print(listdir)
stat = os.stat(path)
print("获取文件/目录信息")
print(stat)
stat = os.stat(path)
print("获取文件/目录信息")
print(stat)
fsize = os.path.getsize(path)
print("文件字节大小")
print(type(fsize))
print(fsize)
getatime = os.path.getatime(path)
print("返回path所指向的文件或者目录的最后存取时间")
print(getatime)
getmtime = os.path.getmtime(path)
print("返回path所指向的文件或者目录的最后修改时间")
print(getmtime)
## rename = os.rename("oldname","newname")
## print("重命名文件/目录")
## print(rename)
## # os.remove()
## # print("删除一个文件")
## chdir = os.chdir("dirname1")
## print("改变当前脚本工作目录;相当于shell下cd")
## print(chdir)
## curdir = os.curdir
## print("返回当前目录: (‘.’)")
## print(curdir)
## pardir = os.pardir
## print("获取当前目录的父目录字符串名:(‘..’)")
## print(pardir)
## removedirs = os.removedirs('dirname1')
## print("若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推")
## print(removedirs)
## rmdir = os.rmdir('dirname')
## print("删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname")
## print(rmdir)
## system = os.system("bash command")
## print("运行shell命令,直接显示")
## print(system)
## normpath = os.path.normpath(os.path.join(os.path.abspath(__file__),'..','..','..'))
## print("表示返回当前文件的上上上层目录")
## print(normpath)
replace.py
## 把全部图片去掉空格
import os
def rename_images_in_directory(directory):
"""
去掉指定目录下所有图片文件名中的空格。
参数:
directory (str): 需要处理的目录路径。
"""
# 支持的图片扩展名
image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff')
# 遍历目录中的所有文件
print(os.listdir(directory))
for filename_0 in os.listdir(directory):
print(directory + '/' + filename_0)
if filename_0 == "replace.py":
continue
if filename_0 == ".DS_Store":
continue
for filename in os.listdir(directory + '/' + filename_0):
print(filename)
# # 检查文件是否是图片
# if filename.lower().endswith(image_extensions):
# 新文件名去掉空格
new_filename = filename.replace(' ', '') # 可以替换为其他字符
# 构建完整的文件路径
old_file_path = os.path.join(directory + '/' + filename_0, filename)
new_file_path = os.path.join(directory + '/' + filename_0, new_filename)
# 重命名文件
os.rename(old_file_path, new_file_path)
print(f"已重命名: '{filename}' -> '{new_filename}'")
# 使用示例
directory_path = '/a/a/a' # 替换为你的目录路径
rename_images_in_directory(directory_path)
放到文件夹里,这个文件夹里有小文件夹,小文件夹里有图片,运行python replace.py可以把文件夹里的全部文件去掉空格