栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[Python] Python标准库os常用操作代码汇总

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Python] Python标准库os常用操作代码汇总

 美图欣赏2022/07/14

导入os标准库

import os

os模块属于内置模块,不需要安装,直接导入即可使用。导入os模块后,就可以使用该模块提供的属性和方法

1.os模块 1.1返回当前工作目录
os.getcwd()

getcwd()方法用于返回表示当前工作目录的字符串(当前工作目录是指当前文件所在的目录) 

例如,在C:UsersX2001565DesktopDemo.py文件中,编写以下代码:

import os
# 打印当前工作目录
print(os.getcwd()) # C:UsersX2001565
1.2列出目录的内容(以列表的形式返回指定路径下的目录名和文件名)
# path表示一个路径,用于指定要获取的文件和目录的根目录,不能是文件路径
os.listdir(path)

listdir()方法用于返回指定路径下的文件和目录的名称(不包括子孙目录) 

例如,C:UsersX2001565DesktopPure supplier LT项目的目录结构如下图所示:

使用listdir()方法获取指定路径下的目录和文件,代码如下所示:

import os
# 获取指定路径下的目录和文件列表
path = os.listdir(r'C:UsersX2001565DesktopPure supplier LT项目')  
print('目录下包括:', path)

程序运行结果如下:

目录下包括:['Input & Output栏位关系梳理', 'pure_ct2r.py', 'pure_ftp.py', 'supply.txt', 'timer.py'] 

注意: listdir()方法的输出结果列表是以字母顺序排列,不区分文件和目录 

使用listdir()方法将获取到的指定路径下的目录和文件分别输出,代码如下: 

import os
root = r'C:UsersX2001565DesktopPure supplier LT项目'
# 获取指定路径下的目录和文件列表
path = os.listdir(root)  
# 路径列表
list_dir = []
# 文件列表
list_file = []

for item in path:  # 遍历获取到的目录和文件列表
    p = os.path.join(root, item)  # 连接目录
    if os.path.isdir(p):  # 判断是否为目录
        list_dir.append(p)
    elif os.path.isfile(p):  # 判断是否为文件
        list_file.append(p)

print('目录:', list_dir)  # 打印目录列表
print('文件:', list_file)  # 打印文件列表

 程序运行结果如下:

目录: ['C:\Users\X2001565\Desktop\Pure supplier LT项目\Input & Output栏位关系梳理']
文件: ['C:\Users\X2001565\Desktop\Pure supplier LT项目\pure_ct2r.py', 'C:\Users\X2001565\Desktop\Pure supplier LT项目\pure_ftp.py', 'C:\Users\X2001565\Desktop\Pure supplier LT项目\supply.txt', 'C:\Users\X2001565\Desktop\Pure supplier LT项目\timer.py']
1.3创建一级目录 
# path用于指定要创建目录的路径
os.mkdir(path)

mkdir()方法用于创建一级目录 

说明: 使用mkdir()方法只能创建一级目录,即创建目录C:UsersX2001565DesktopPure supplier LT项目Test,且目录C:UsersX2001565DesktopPure supplier LT项目必须是存在的

例如,使用mkdir()方法创建指定的一级目录,代码如下:

import os
os.mkdir(r'C:UsersX2001565DesktopPure supplier LT项目test')

程序执行结果如下:

1.4删除空目录
# path表示要删除的目录
os.rmdir(path)

rmdir()方法用于删除空目录

例如,删除C:UsersX2001565DesktopPure supplier LT项目路径下的空文件夹Test

代码如下所示:

import os
# 指定要删除的目录
path = r'C:UsersX2001565DesktopPure supplier LT项目Test'
'''
注意:如果要删除的目录不存在,那么将抛出"FileNotFoundError: [WinError 2] 系统找不到指定的文件"异常
因此,在执行os.rmdir()方法前,建议先判断该路径是否存在,可以使用os.path.exists()方法判断
'''
if os.path.exists(path):  # 判断目录是否存在
    os.rmdir(path)  # 删除目录
    print('目录删除成功!')
else:
    print('该目录不存在!')

程序运行结果如下:

目录删除成功! 
1.5重命名
os.rename('需要进行重命名的文件或目录的路径','用于指定新的文件或目录名称的路径')

rename()方法用于将文件或目录重命名 

例如,使用 rename()方法将C:UsersX2001565DesktopPure supplier LT项目目录下的test.py文件重命名为new_test.py 

代码如下:

import os 
os.rename(r'C:UsersX2001565DesktopPure supplier LT项目test.py',r'C:UsersX2001565DesktopPure supplier LT项目new_test.py')

程序运行结果如下:

1.6删除文件 
os.remove('文件名.py')

例如,删除Test.py脚本文件(文件所在位置: C:UsersX2001565DesktopPure supplier LT项目)

代码如下所示:

import os
# 获取当前工作目录
os.getcwd() # 'C:\Users\X2001565'
# 将当前工作目录更改到Test.py脚本文件所在目录
os.chdir(r'C:UsersX2001565DesktopPure supplier LT项目')
# 删除Test.py脚本文件
os.remove('Test.py')
1.7执行系统命令
os.system(path)

例:os.system执行.py文件 

import os
# 错误写法,没声明文件类型,默认按系统文件原始格式打开
os.system(r'E:start.py')       
# 正确写法,声明定义为Python文件,Python运行 
os.system(r'python E:start.py')
1.8更改当前工作目录
# path用于指定文件路径
os.chdir(path)

chdir()方法用于更改当前工作目录为指定的路径 

例如,使用chdir()方法将当前工作目录更改到D盘根目录下,代码如下:

import os
print('更改前的当前工作目录:', os.getcwd())
os.chdir(r'D:/')  # 将当前工作目录更改到Z盘根目录
print('更改后的当前工作目录:', os.getcwd())

程序运行结果如下:

更改前的当前工作目录: C:UsersX2001565
更改后的当前工作目录: D:
1.9遍历目录中的所有文件 

walk()方法用于遍历目录树,返回一个3元组生成器(当前目录的名称,当前目录中子目录的列表,当前目录中文件的列表)

例如,使用 walk()方法遍历当前目录,代码如下:

import os
tuples = os.walk('./')
# 通过for循环输出遍历结果
for tuple1 in tuples:
    print(tuple1) # # 打印每一级目录的元组

遍历当前目录,分别输出指定目录下的子目录及文件,不存在子目录或者文件时,显示无,代码如下:

import os
# 遍历当前目录
tuples = os.walk('./')
# 通过for循环打印遍历结果
for root, dirs, files in tuples:
    print('文件目录:', root)  # 打印文件目录
    print('子目录:', dirs if dirs else '无')  # 打印子目录
    print('文件:', files if files else '无')  # 打印文件
2.os.path模块

os模块是Python内置的与操作系统功能和文件系统相关的模块,该模块的子模块os.path是专门用于进行路径操作的模块

os模块和它的子模块os.path都属于内置模块,不需要安装,直接导入即可使用

导入os 模块的代码如下:

# 导入os模块后,也可以使用其子模块os.path
import os

如果在程序中,只涉及到os.path模块的内容,也可以直接导入os.path,代码如下:

import os.path
2.1判断路径是否存在
# path表示要判断的路径,可以采用绝对路径,也可以采用相对路径
os.path.exists(path)

exists()方法用于判断路径(文件或目录)是否存在,如果存在则返回True;不存在则返回False

例如,使用 exists()方法判断保存在C:UsersX2001565DesktopPure supplier LT项目目录下的test.py文件是否存在

代码如下: 

import os.path
path = r"C:UsersX2001565DesktopPure supplier LT项目test.py"  # 文件路径
# 判断文件是否存在
if os.path.exists(path):
    print(path, "文件存在")
else:
    print(path, "文件不存在")

程序执行结果如下所示:

C:UsersX2001565DesktopPure supplier LT项目test.py 文件存在

用exists()方法判断C:UsersX2001565DesktopPure supplier LT项目test目录是否存在,代码如下: 

import os.path
path = r"C:UsersX2001565DesktopPure supplier LT项目test"  # 目录
print(os.path.exists(path))  # True

# 判断目录是否存在
if os.path.exists(path):  
    print(path, "目录存在")
else:
    print(path, "目录不存在")

程序运行结果如下所示:

True
C:UsersX2001565DesktopPure supplier LT项目test 目录存在
2.2判断是否为目录
# path表示要判断的路径,可以采用绝对路径,也可以采用相对路径
os.path.isdir(path)

isdir()方法用于判断指定的路径是否为目录(文件夹),如果给定的路径是目录,则返回True,否则返回 False

案例1

代码如下:

import os.path
# 判断是否为目录
print(os.path.isdir(r'C:UsersX2001565DesktopPure supplier LT项目')) # True
print(os.path.isdir(r'C:UsersX2001565DesktopPure supplier LT项目test.py')) # False

案例2 

获取指定目录下的全部子目录,首先应用os.listdir()方法获取指定路径下的目录和文件列表,然后遍历该列表,并且将各路径进行连接;再判断是否为目录,如果为目录,则添加到指定列表;最后打印该列表,代码如下: 

import os
root = r'C:UsersX2001565DesktopPure supplier LT项目'
# 获取指定路径下的目录和文件列表
path = os.listdir(root)
# 路径列表
list_dir = []

# 遍历获取到的目录和文件列表
for item in path:  
    p = os.path.join(root, item) # 连接目录
    if os.path.isdir(p): # 判断是否为目录
        list_dir.append(p)

# 打印目录列表
print(f'目录:{list_dir}')

程序运行结果如下所示:

目录:['C:\Users\X2001565\Desktop\Pure supplier LT项目\Input & Output栏位关系梳理', 'C:\Users\X2001565\Desktop\Pure supplier LT项目\test']
2.3判断是否为绝对路径 
# path表示要判断的路径,可以采用绝对路径,也可以采用相对路径
os.path.isabs(path)

isabs()方法用于判断路径是否为绝对路径,如果给定的路径是绝对路径,则返回True,否则返回 False

例如,使用isabs()方法分别判断两个文件的路径是否为绝对路径,如果不是绝对路径,则转换为绝对路径并输出,代码如下:

import os.path

path_list = [r'python-packagetask1.py', r'C:UsersX2001565Desktopdemo',
             r'C:UsersX2001565Desktopmain.py']

# 遍历目录列表
for path in path_list:  
    # 如果不是绝对路径
    if not os.path.isabs(path):
        # 转换为绝对路径
        path = os.path.abspath(path)
        # 打印各个路径
        print(path)

程序运行结果如下所示:

C:UsersX2001565Desktoppython-packagetask1.py
2.4判断是否为普通文件
# path表示要判断的路径,可以采用绝对路径,也可以采用相对路径
os.path.isfile(path)

isfile()方法用于判断是否为普通文件,如果给定的路径对应的文件是普通文件,则返回True,否则返回False

import os.path
# 判断是否为普通文件
print(os.path.isfile(r'C:UsersX2001565DesktopPure supplier LT项目pure_ftp.py')) # True
# 如果指定的文件不存在,则返回False
print(os.path.isfile(r'C:UsersX2001565DesktopPure supplier LT项目pure_ftp123.py')) # False
# 目录
path = r'C:UsersX2001565DesktopPure supplier LT项目'  
filename = 'test.py'  # 文件名
# 连接目录和文件名时,不推荐使用字符串拼接方法实现
# 推荐使用os.path.join()方法实现
# 判断是否为普通文件
print(os.path.isfile(os.path.join(path, filename))) # True
2.5拼接路径
# path表示要拼接的文件路径,路径间使用逗号进行分隔
os.path.join(path1,path2,...)

join()方法用于将两个或者多个路径拼接到一起组成一个新的路径 

注意:使用os.path.join()函数拼接路径时,并不会检测该路径是否真实存在

示例代码如下:

import os.path
# 拼接字符串
# D:CodeHudasHello.py
print(os.path.join(r"D:CodeHudas", "Hello.py"))  
'''
如果要拼接的路径中,存在多个绝对路径,那么按从左到右顺序,以最后一次出现的绝对路径为准
并且该路径之前的参数都将被忽略,代码如下:
'''
# C:/demo
print(os.path.join('E:/Code', 'E:/Code/lesson', 'Code', 'C:/', 'demo'))
2.6获取绝对路径
# path表示要获取绝对路径的相对路径,可以是文件也可以是目录
# 绝对路径是指在使用文件时指定文件的实际路径,它不依赖于当前工作目录
os.path.abspath(path)

abspath()方法用于返回文件或者目录的绝对路径 

注意:abspath()方法在获取实际路径时,并不会检查路径是否真实存在,只是把当前文件目录与 abspath()方法给定的路径进行拼接

import os.path
# 打印绝对路径
# C:UsersX2001565Desktoptest.py
print(os.path.abspath(r'test.py'))
# 使用abspath()方法获取当前Python文件的绝对路径,代码如下:
'''
注意:只有当在脚本中执行的时候,os.path.abspath(__file__)才会起作用,因为该命令是获取的当前执行脚本的完整路径
'''
print(os.path.abspath(os.path.basename(__file__)))
print(os.path.abspath(__file__))
2.7从一个路径中提取文件名
# path表示要提取文件名的路径
os.path.basename(path)

basename()方法用于从一个路径中提取文件名,即返回提取后的文件名(获取完整路径当中的主体部分)。当指定的路径是一个不包括文件名的路径时,则返回空字符串 

import os.path

# 打印文件名message.txt
print(os.path.basename(r"demomessage.txt"))  
path1 = 'e:/demo/test.txt'
path2 = 'e:/demo'
path3 = r'E:/Code/Hudas/'
print(os.path.basename(path1))  # test.txt
print(os.path.basename(path2))  # demo
# 如果path 以/或  结尾,那么就会返回空值
print(os.path.basename(path3))  # ""
2.8获取路径中的目录 
# path表示要提取目录的路径
os.path.dirname(path)

dirname()方法用于从一个路径中提取目录(返回提取后的目录)

import os.path  
# 获取完整路径当中的目录部分
# D:CodeHudaspythondemo
print(os.path.dirname(r"D:CodeHudaspythondemomessage.txt"))
# Hudas
print(os.path.dirname(r"Hudas/message.txt"))
2.9分割路径名
# path表示要分割的路径,可以采用绝对路径,也可以采用相对路径
os.path.split(path)

split()方法用于从一个路径中分割出目录和文件名,返回一个元组,如果指定的是一个相对路径,并且以斜杠结尾,则返回的元组的第二个元素为空

例如,使用split()方法从绝对路径中分割出盘符、各个文件夹名和文件名,示例代码如下:

import os.path
# 代码的路径
lesson_path = r'D:/Code/Hudas/test'

folders = []
# 分割驱动器和目录
drive, path_and_file = os.path.splitdrive(lesson_path)
# 获取驱动器中的盘符
folders.append(drive[0])
# 分割路径和文件名
path, file = os.path.split(path_and_file)

# 处理路径
if path != '':
    # 将路径按/分隔
    for i in path.split('/'):
        if i != '':
            folders.append(i)
            
# 处理文件名
if file != '':
    folders.append(file)

# 打印分隔结果
print(folders) # ['D', 'Code', 'Hudas', 'test']
2.10分割文件名和扩展名
# path表示要分割的路径,可以采用绝对路径,也可以采用相对路径
os.path.splitext(path)

splitext()方法用于从一个路径中分割基本文件名和扩展名,返回一个元组,它的第一个元素为字符串表示的基本文件名(路径中除扩展名以外的部分),第二个元素为字符串表示的扩展名(包括 . 号)

如果指定的路径中不包括扩展名,则返回元组的第二个元素为空字符串

import os.path
# 分割绝对路径
# ('C:\Users\X2001565\Desktop\list', '.docx')
print(os.path.splitext(r'C:UsersX2001565Desktoplist.docx'))
# 分割没有文件名的绝对路径
# ('D:/Hudas/test/pdf/', '')
print(os.path.splitext(r'D:/Hudas/test/pdf/'))
# 分割相对路径
# ('Desktop\test', '.txt')
print(os.path.splitext(r'Desktoptest.txt'))

# Word文档的路径
word_path = r'C:UsersX2001565Desktoplist.docx'
# 分割Word文档的路径
split_path = os.path.splitext(word_path)
# 组合PDF文档的路径
pdf_path = split_path[0] + '.pdf'
print(f'生成的PDF文档路径:{pdf_path}') # 生成的PDF文档路径:C:UsersX2001565Desktoplist.pdf
2.11获取文件的大小 
os.path.getsize(path)

getsize()方法用于获取文件的大小 

例如,获取C:UsersX2001565DesktopPure supplier LT项目目录下test.py文件的大小,代码如下:

import os
os.path.getsize(r'C:UsersX2001565DesktopPure supplier LT项目test.py')
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号