Python OS 操作系统操作模块

一、o s模块的使用

# os模块

# os模块就是对操作系统进行操作,使用该模块必须先导入模块:
import os

#getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹)
result = os.getcwd()
print(result)

#chdir()改变当前工作目录
os.chdir('/home/sy')
result = os.getcwd()
print(result)

open('02.txt','w')

#操作时如果书写完整的路径则不需要考虑默认工作目录的问题,按照实际书写路径操作
open('/home/sy/下载/02.txt','w')

#listdir() 获取指定文件夹中所有内容的名称列表
result = os.listdir('/home/sy')
print(result)

#mkdir()  创建文件夹
#os.mkdir('girls')
#os.mkdir('boys',0o777)

#makedirs()  递归创建文件夹
#os.makedirs('/home/sy/a/b/c/d')

#rmdir() 删除空目录
#os.rmdir('girls')

#removedirs 递归删除文件夹  必须都是空目录
#os.removedirs('/home/sy/a/b/c/d')

#rename() 文件或文件夹重命名
#os.rename('/home/sy/a','/home/sy/alibaba'
#os.rename('02.txt','002.txt')

#stat() 获取文件或者文件夹的信息
#result = os.stat('/home/sy/PycharmProject/Python3/10.27/01.py)
#print(result)

#system() 执行系统命令(危险函数)
#result = os.system('ls -al')  #获取隐藏文件
#print(result)

#环境变量
'''
环境变量就是一些命令的集合
操作系统的环境变量就是操作系统在执行系统命令时搜索命令的目录的集合
'''
#getenv() 获取系统的环境变量
result = os.getenv('PATH')
print(result.split(':'))

#putenv() 将一个目录添加到环境变量中(临时增加仅对当前脚本有效)
#os.putenv('PATH','/home/sy/下载')
#os.system('syls')

#exit() 退出终端的命令

#os模块中的常用值
#curdir  表示当前文件夹   .表示当前文件夹  一般情况下可以省略
print(os.curdir)

#pardir  表示上一层文件夹   ..表示上一层文件夹  不可省略!
print(os.pardir)

#os.mkdir('../../../man')#相对路径  从当前目录开始查找
#os.mkdir('/home/sy/man1')#绝对路径  从根目录开始查找

#name 获取代表操作系统的名称字符串
print(os.name) #posix -> linux或者unix系统  nt -> window系统

#sep 获取系统路径间隔符号  window ->\    linux ->/
print(os.sep)

#extsep 获取文件名称和后缀之间的间隔符号  window & linux -> .
print(os.extsep)

#linesep  获取操作系统的换行符号  window -> \r\n  linux/unix -> \n
print(repr(os.linesep))



#导入os模块
import os

#以下内容都是os.path子模块中的内容

#abspath()  将相对路径转化为绝对路径
path = './boys'#相对
result = os.path.abspath(path)
print(result)

#dirname()  获取完整路径当中的目录部分  &  basename()获取完整路径当中的主体部分
path = '/home/sy/boys'
result = os.path.dirname(path)
print(result)

result = os.path.basename(path)
print(result)

#split() 将一个完整的路径切割成目录部分和主体部分
path = '/home/sy/boys'
result = os.path.split(path)
print(result)

#join() 将2个路径合并成一个
var1 = '/home/sy'
var2 = '000.py'
result = os.path.join(var1,var2)
print(result)

#splitext() 将一个路径切割成文件后缀和其他两个部分,主要用于获取文件的后缀
path = '/home/sy/000.py'
result = os.path.splitext(path)
print(result)

#getsize()  获取文件的大小
#path = '/home/sy/000.py'
#result = os.path.getsize(path)
#print(result)

#isfile() 检测是否是文件
path = '/home/sy/000.py'
result = os.path.isfile(path)
print(result)

#isdir()  检测是否是文件夹
result = os.path.isdir(path)
print(result)

#islink() 检测是否是链接
path = '/initrd.img.old'
result = os.path.islink(path)
print(result)

#getctime() 获取文件的创建时间 get create time
#getmtime() 获取文件的修改时间 get modify time
#getatime() 获取文件的访问时间 get active time

import time

filepath = '/home/sy/下载/chls'

result = os.path.getctime(filepath)
print(time.ctime(result))

result = os.path.getmtime(filepath)
print(time.ctime(result))

result = os.path.getatime(filepath)
print(time.ctime(result))

#exists() 检测某个路径是否真实存在
filepath = '/home/sy/下载/chls'
result = os.path.exists(filepath)
print(result)

#isabs() 检测一个路径是否是绝对路径
path = '/boys'
result = os.path.isabs(path)
print(result)

#samefile() 检测2个路径是否是同一个文件
path1 = '/home/sy/下载/001'
path2 = '../../../下载/001'
result = os.path.samefile(path1,path2)
print(result)


#os.environ 用于获取和设置系统环境变量的内置值
import os
#获取系统环境变量  getenv() 效果
print(os.environ['PATH'])

#设置系统环境变量 putenv()
os.environ['PATH'] += ':/home/sy/下载'
os.system('chls')

二、OS模块常用方法

import os, sys, stat
os与sys模块的官方解释如下:

os模块
os.linesep:用于在文件中分隔行的字符串
os.sep:表示默认的文件路径分隔符,windows为\, linux为/
os.pathsep:用于分隔文件路径的字符串
os.curdir:当前工作目录的字符串名称
os.pardir:(当前工作目录的)父目录字符串名称
os.walk(spath):用来遍历目录下的文件和子目录
os.listdir(dirname):列出dirname下的目录和文件
os.mkdir() : 创建目录
os.makedirs(): 创建目录,包含中间级目录
os.remove():删除文件,不能是目录
os.rmdir():删除空目录
os.removedirs(path):删除目录及其子目录
os.rename(src, dst) :修改文件名
os.renames(old, new):修改文件或目录名,包含中间级
os.chdir("/tmp"): 更改当前目录
os.chmod( "c:\\test\\buildid.txt", stat.S_IWRITE ): 去除文件的只读属性
os.chmod( path, flags ) # 给文件设置权限
	path -- 文件名路径或目录路径。
	flags -- 可用以下选项按位或操作生成, 目录的读权限表示可以获取目录里文件名列表, 
			执行权限表示可以把工作目录切换到此目录 ,删除添加目录里的文件必须同时有写和执行权限 ,
			文件权限以用户id->组id->其它顺序检验,最先匹配的允许或禁止权限被应用。
		stat.S_IXOTH:其他用户有执行权0o001
		stat.S_IWOTH:其他用户有写权限0o002
		stat.S_IROTH:其他用户有读权限0o004
		stat.S_IRWXO:其他用户有全部权限(权限掩码)0o007
		stat.S_IXGRP:组用户有执行权限0o010
		stat.S_IWGRP:组用户有写权限0o020
		stat.S_IRGRP:组用户有读权限0o040
		stat.S_IRWXG:组用户有全部权限(权限掩码)0o070
		stat.S_IXUSR:拥有者具有执行权限0o100
		stat.S_IWUSR:拥有者具有写权限0o200
		stat.S_IRUSR:拥有者具有读权限0o400
		stat.S_IRWXU:拥有者有全部权限(权限掩码)0o700
		stat.S_ISVTX:目录里文件目录只有拥有者才可删除更改0o1000
		stat.S_ISGID:执行此文件其进程有效组为文件所在组0o2000
		stat.S_ISUID:执行此文件其进程有效用户为文件所有者0o4000
		stat.S_IREAD:windows下设为只读
		stat.S_IWRITE:windows下取消只读

os.path模块
os.path.pathsep:表示默认的路径间的分隔符,windows为“;”; Linux为“:”
os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false
os.path.isfile(name):判断name是不是一个文件,不存在name也返回false
os.path.exists(name):判断是否存在文件或目录name
os.path.getsize(name):获得文件大小,如果name是目录返回0L
os.path.getctime(name):获得文件的创建时间
os.path.getmtime(name):获得文件的修改时间
os.path.getatime(name):获得文件的最后访问时间
os.path.isabs(name):测试是否是绝对路径
os.path.abspath(name):获得绝对路径
os.path.normpath(path):规范path字符串形式
os.path.relpath(path, start='.'):返回路径的相对版本
os.path.split(name):分割文件名与目录(如果完全使用目录,它也会将最后一个目录作为文件名而分离,它不会判断文件或目录是否存在)
os.path.splitext():分离文件名与扩展名
os.path.splitdrive():分离驱动名或unc名字
os.path.join(路径+os.path.altsep,'1234'+os.path.altsep,'abc'):将分离的各部分组合成一个路径名
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路径
os.path.expanduser("~"):用来获得user的home路径。

shutil模块
shutil.copyfile(src, dst):拷贝文件
shutil.copytree(srcDir, dstDir):拷贝目录
shutil.rmtree('dir'):删除非空文件夹
shutil.move('old','new'):修改文件和目录名称

glob模块
匹配文件:glob.glob(r”c:\linuxany\*.py”)

总结:os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口。

三、给文件夹中图片加上一个前缀

# -*- coding:utf-8 -*-
import re
import os
import time

# str.split(string)分割字符串
# '连接符'.join(list) 将列表组成字符串

def change_name(path):
    global i
    if not os.path.isdir(path) and not os.path.isfile(path):
        return False
    if os.path.isfile(path):
        file_path = os.path.split(path)  # 分割出目录与文件
        lists = file_path[1].split('.')  # 分割出文件与文件扩展名
        file_ext = lists[-1]  # 取出后缀名(列表切片操作)从后往前取
        img_ext = ['bmp','jpeg','gif','psd','png','jpg']
        if file_ext in img_ext:
            os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
            i += 1  # 注意这里的i是一个陷阱
            img_ext = 'bmp|jpeg|gif|psd|png|jpg'
        if file_ext in img_ext:
           print('ok---'+file_ext)
        elif os.path.isdir(path):
            for x in os.listdir(path):
                change_name(os.path.join(path,x)) # os.path.join() 在路径处理上很有用

img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start

print('程序运行耗时:%0.2f'%(c))
print('总共处理了 %s 张图片'%(i))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值