os库常见用法

os是python内置处理文件路径的库,下面我说一下它常用的一些方法

目录

1 返回当前文件所在文件夹路径 os.getcwd()

2 文件重命名 os.rename()

3  获取指定路径文件列表 os.listdir()

4  生成路径中的每一级路径的迭代器 os.walk()

5  路径合并 os.path.join()

6  提取文件夹下的文件名 

7  批量修改文件名

8  批量修改图像尺寸

9 判断文件夹是否存在,如果不存在则创建文件夹


1 返回当前文件所在文件夹路径 os.getcwd()

返回值类型为字符串

import os
a = os.getcwd()
print(a)
print(type(a))

2 文件重命名 os.rename()

第一个参数为文件的老名字,第二个参数为想重命名的名字

  • 注:要带上文件尾缀(例:.jpg)与路径

我现在有一张图叫 1.jpg ,我想把它命名为 西红柿.jpg

这个图片在这个地方

import os
old_name = r'C:\Users\MSI\python_help_example\1.jpg'
new_name = r'C:\Users\MSI\python_help_example\西红柿.jpg'
os.rename(old_name,new_name)

3  获取指定路径文件列表 os.listdir()

可以不加参数,不加参数的路径默认为与执行文件相同的路径

import os
doc_list = os.listdir()
print(doc_list)
print(type(doc_list))

也可以加上路径

import os
doc_list = os.listdir(r'C:\Users\MSI\python_help_example')
print(doc_list)
print(type(doc_list))

4  生成路径中的每一级路径的迭代器 os.walk()

我们现在对 1 这个文件夹使用os.walk,1这个文件夹中有2和5两个文件夹与3.txt,6.txt两个文件,2这个文件夹中有4.txt这个文件

import os
all_doc = os.walk(r'C:\Users\MSI\python_help_example\1')
print(all_doc)
print(type(all_doc))

下面我们遍历一下os.walk的结果

for i in all_doc:
    print(i)

每一个元素是一个元组,元组中有三个值,第一个值为路径,第二个值为文件夹,第三个值为文件名

上面返回的结果意思是

  • 在 C:\Users\MSI\python_help_example\1 这个路径下,有文件夹 '2', '5' ,有文件 '3.txt', '6.txt'
  • 在 'C:\Users\MSI\python_help_example\1\2 这个路径下,没有文件夹,有文件 '4.txt'
  • 在 C:\Users\MSI\python_help_example\1\5 这个路径下,没有文件夹,也没有文件


5  路径合并 os.path.join()

可以使用两个路径进行合并

import os
a = 'C:\\Users\\MSI\\python_help_example'
b = '1'
c = os.path.join(a,b)
print(c)
print(type(c))

也可以更多

import time
a = 'C:\\Users\\MSI\\python_help_example'
b = '1'
c = '2'
d = os.path.join(a,b,c)
print(d)
print(type(d))

6  提取文件夹下的文件名 

import os
import re

path = 'all/'

need_form = True
if not need_form:
    p = re.compile(r'(.*)\.')

filename_list = os.listdir(path)
for filename in filename_list:
    if need_form:
        print(filename)
    else:
        content = p.findall(filename)[0]
        print(content)

这两个都是自带的库,如果需要尾缀保持现在不变就可以了,它的执行结果是这样的

如果不需要尾缀,我们这里改为False

它的运行结果是这样的

上面的re是python的正则,如果想了解的话可以看一下这个 Python 正则表达式_Suyuoa的博客-CSDN博客 

7  批量修改文件名

import os
import re

path = 'all/'    # 目标路径
filename_list = os.listdir(path)  # 扫描目标路径的文件,将文件名存入列表
a = 0
p = re.compile(r'\..*')
for i in filename_list:
    used_name = path + filename_list[a]
    form = p.findall(used_name)[0]
    new_name = path + str(a) + form
    os.rename(used_name,new_name)
    print("文件%s重命名成功,新的文件名为%s" %(used_name,new_name))
    a += 1

这个是只用os和re,都是python自带的

首先我们搞一个文件夹all

文件夹中是我们要重命名的文件

运行之后是这样的

我们此时的规则是从0开始排,你也可以改变规则,比如搞一个列表

8  批量修改图像尺寸

opencv是不能读取中文路径的,所以我们下面用的文件不能使用中文名称,如果用了就会报错

import os
import cv2

files = os.listdir('old/')
for file_name in files:
    img = cv2.imread('old/'+ file_name)
    img = cv2.resize(img,(256,256))
    cv2.imwrite('new/' + file_name,img)
    print(file_name,'已完成')

这个是用os和opencv做的,opencv直接pip install opencv-python就可以了,os是python自带的

使用前我们需要创建old和new两个文件夹,我们把要改变的图像放old中,改变完的图像会放在new中

(256,256)是我们要生成的图像大小,.jpg是文件格式,new与old都可以改,我们old中的文件是这样的

运行之后的new中的文件是这样的

9 判断文件夹是否存在,如果不存在则创建文件夹

我当前的目录下没有pictures这个文件夹

import os

if not os.path.exists('./pictures'):
    os.mkdir('./pictures')

运行之后就有了

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值