python根须系统斜杠_深入浅出Python中的os模块

6ea5e99e175dce6ceec36b7ea66a8d05.png

「@Author:Runsen」

当初学Python的时候,把一些标准库和第三方开源库学的七零八落,不成系统,正好趁这个机会来系统的整理一下,先从Python常用的标准库os开始吧。

os

OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的 操作。可以查看OS模块的帮助文档。

import os #导入os模块  
help(os)   #查看os模块帮助文档,里面详细的模块相关函数和使用方法

获取当前系统

首先我们需要先导入os模块:直接打印os.name

import os
print(os.name)

#若是Windows则输出'nt',若是Linux/Unix,则是'posix'

获取当前文件的绝对路径

# 获取当前文件的绝对路径 桌面上的demo.py
absolute_file_path = os.path.abspath(__file__)
print(absolute_file_path)

打印结果:C:\Users\YIUYE\Desktop\demo.py

获取当前目录

函数os.getcwd():功能:获取当前目录,python的工作目录。

cwd = os.getcwd()
print(cwd

打印结果:C:\Users\YIUYE\Desktop

判断文件是否存在,返回值为布尔型

import os
file_path = r"C:\Users\YIUYE\Desktop\demo.py"
has_file = os.path.exists(file_path)
print("file path: [{}] is exist: {}".format(file_path, has_file))

file path: [C:\Users\YIUYE\Desktop\demo.py] is exist: True

获取文件的名称

import os
# 获取文件的名称
file_name = os.path.basename(__file__)
print(file_name)

打印结果:demo.py

文件重命名


old_file = r"C:\Users\YIUYE\Desktop\demo.py"
# 或者old_file = "C:/Users/YIUYE/Desktop/demo.py"  前面没有r
new_file = r"C:\Users\YIUYE\Desktop\demo1.py"
# 重命名文件
os.rename(old_file, new_file)

注意点:Unix使用斜杆/ 作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/作为分隔符。

Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了,为了不混淆,所以采用 反斜杠\ 作为路径分隔符。所以目前windows系统上的文件浏览器都是用 反斜杠\ 作为路径分隔符。

随着发展,DOS系统已经被淘汰了,命令提示符也用的很少,很多时候斜杆和反斜杠在大多数情况下可以互换,没有影响。

记住:

  • 浏览器地址栏网址使用 斜杆/ ;

  • windows文件浏览器上使用 反斜杠\ ;

  • 出现在html url() 属性中的路径,指定的路径是网络路径,所以必须用 斜杆/ ;

出现在普通字符串中的路径,如果代表的是windows文件路径,则使用 反斜杠\ 需要在前面加r;如果代表的是网络文件路径,则必须使用 斜杆/

具体报错和指示如下图。

0e02111d9e23b4bb88acf9958fa22255.png
633694a4dd2de2b3910ce17ded0ffd4c.png

如果是Mac没有反斜杠\,和Linux一样都是只有斜杆/

创建文件夹

os.makedirs创建多级目录

# 路径中的多个文件夹都不存在时,可以递归创建,code和code1文件夹本身没有
forders_path = r"C:\Users\YIUYE\Desktop\code\code1"
os.makedirs(forders_path)

os.path.mkdir:只能创建一个文件夹, code文件夹存在,才能创建code1文件夹,如果code文件夹不存在,则会出错。

forder_path = r"C:\Users\YIUYE\Desktop\code\code1"
os.mkdir(forder_path)

获取文件夹下的所有文件名

forder_path = r"D:\学习资料"
# 获取文件夹code下的所有文件名,以列表的形式返回
file_names = os.listdir(forder_path)
print(file_names)

获取文件夹下的所有文件夹和文件(无递归遍历)

print(os.scandir(r"D:\学习资料"))

打印结果:

返回的是可迭代对象,我们用for循环迭代一下遍出结果,这里进行判断,寻找文件,而不是文件夹

for f in os.scandir(r"D:\学习资料"):
   if not f.is_file(): #is_file判断是否是文件
       print('yes',f)
   else:
       print('no:', f)
03ecf5d6f397f925c40399282e6e1fa5.png

将path分割成路径名和文件名

os.path.split函数返回一个路径的目录名和文件名

print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py"))
print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py")[0])
print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py")[1])


打印结果:('C:\\Users\\YIUYE\\Desktop', 'demo.py')
C:\Users\YIUYE\Desktop
demo.py

拼接目录与文件名或目录

os.path.join函数拼接目录与文件名或目录

print(os.path.join('I', 'am', 'Runsen'))

打印结果:I\am\Runsen

练习

「创建一个函数,获取文件夹下包含子文件夹的所有文件路径,并且存入list输出?」

最简单的方法使用os.walk

os.walk()用类似于深度遍历的方式遍历文件夹中的子文件夹以及文件。

import os
def get_Listfiles(path):
    Filelist = []
    # os.walk()用类似于深度遍历的方式遍历文件夹中的子文件夹以及文件。
    # 最基本的显示方式为(root_path,[file_dirs],[files]),
    for home, dirs, files in os.walk(path):
        for file in files:
            Filelist.append(os.path.join(home, file))
            #Filelist.append(file)
    return Filelist
print(get_Listfiles(r"D:\Python"))

具体运行结果如下图。

398fa05b27a3b014223e5df7bef6a26a.png

扫描二维码

获取更多精彩

f7a3048f15006c0e7f463667ca0a7d79.png

往期推荐

Python仅用3行代码就能输出花式字符串图集,同事直呼666!

Python读写yaml排版混乱还丢失注释?我来告诉你解决办法!

关于Python的前后、单双下划线作用,看完这篇文章,吊打面试官!

惊爆:当Python代码遇到zip解压炸弹,未做防护的你后悔莫及!

Pycharm IDEA破解 汉化 插件 带你一文打尽!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值