
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 ioimport syssys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')import oslinesep = os.linesepprint("输出当前平台使用的行终止符,win下为”\t\n”,Linux下为”\n”")print(linesep)pathsep = os.pathsepprint("输出用于分割文件路径的字符串 win下为;,Linux下为:")print(pathsep)name = os.nameprint("输出字符串指示当前使用平台。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.sepprint("系统路径分隔符")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 osdef 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":continueif filename_0 == ".DS_Store":continuefor 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可以把文件夹里的全部文件去掉空格