python入口文件详解_os模块目录操作详解

os模块是一个功能强大模块,主要提供操作系统相关功能接口,例如:文件目录操作,进程相关操作,执行系统命令,解析环境变量等。

使用os模块,我们首先要导入:

import os

下面我们对这些功能逐一介绍。

1:目录相关操作:

目录相关常用操作如下表:

方法

说明

os.getcwd()

获取当前脚本工作的目录路径

os.getcwdb()

同上,返回byte对象

os.chdir(path)

修改当前目录为path

os.mkdir(path, mode=0o777, *, dir_fd=None)

创建目录

os.makedirs(name, mode=0o777, exist_ok=False)

创建多层目录

os.rmdir(path, *, dir_fd=None)

删除目录

os.removedirs(name)

删除多级目录

os.listdir(path='.')

返回指定目录下所有文件

scandir(path='.')

返回迭代器,内容为指定目录下所有文件目录

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)

修改路径权限

os.rename(src, dst,...)

os模块修改文件名

相关操作如下:

#开发环境ubuntu

#获取当前目录

dirname = 'test'

pwd = os.getcwd()

print('当前工作目录:',pwd)

path = '/home/hyg/tmp'

#获取指定文件夹下所有文件

listf = os.listdir(path)

print(f'{path}files:{listf}')

#切换当前工作目录

os.chdir(path)

#查看当前路径:

print('切换工作目录:',os.getcwd())

#当前目录下创建目录

os.mkdir(dirname)

#显示当前目录下文件

print(f'{path}files:{os.listdir("./")}')

#删除目录:

os.rmdir(dirname)

#切回当前目录

os.chdir(pwd)

#显示当前目录

print('当前工作目录:',pwd)

输出结果:

当前工作目录: /home/hyg/tmp

/home/hyg/tmpfiles:['1.jpg', '2.jpg']

切换工作目录: /home/hyg/tmp

/home/hyg/tmpfiles:['test', '1.jpg', '2.jpg']

当前工作目录: /home/hyg/tmp

2:os.path相关方法

这些方法包括目录判断,路径获取,路径拼接,文件信息获取;

2.1 文件判断

方法

说明

os.path.isdir(s)

判断是否为目录 ,如果为目录返回True

os.path.isfile(s)

判断是否为文件 ,如果为文件返回True

os.path.exists(path)

判断文件或目录是否存在 ,存在返回True

2.2 文件路径获取

方法

说明

os.path.dirname(path)

返回目录所在路径

os.path.split(p)

目录切分,返回元组(head,tail

os.path.basename(p)

返回最后一级目录

os.path.join(a, *p)

目录拼接

os.path.abspath(path)

获取文件绝对路径

这里我们要注意basename, split,来看两个例子:

def func(path):

print(f'split :{path}, result:{os.path.split(path)}')

print(f'basename:{path}, result:{os.path.basename(path)}')

path = '/home/linux/test/1.txt'

func(path)

path = '/home/linux/test/'

func(path)

func('1.txt')

输出结果:

split :/home/linux/test/1.txt, result:('/home/linux/test', '1.txt')

basename:/home/linux/test/1.txt, result:1.txt

split :/home/linux/test/, result:('/home/linux/test', '')

basename:/home/linux/test/, result:

split :1.txt, result:('', '1.txt')

basename:1.txt, result:1.txt

注意路径及输出格式。

关于目录拼接:很多代码实现如下面这种方式:

path = '/home/linux/test'

fpath = path + '/' + '1.txt'

print(fpath)

输出结果:

/home/linux/test/1.txt

这种方式问题:

1>跨平台问题,linux与window下目录表达方式不一样;

2>路径拼接,注意目录之间分隔符,有严格限制,容易出错;

我们可以使用下面这种方式:

path = '/home/linux/test/'

fpath = os.path.join(path, '1.txt')

print(fpath)

path = '/home/linux/test'

fpath = os.path.join(path, '1.txt')

print(fpath)

输出结果:

/home/linux/test/1.txt

/home/linux/test/1.txt

path的最后有没有反斜杠,join都可以处理,但是字符串拼接这种方式显然不行。

2.3 获取文件信息

方法

说明

os.stat(path, *, dir_fd=None, follow_symlinks=True)

获取文件或目录信息

os.path.getatime(filename)

获取文件最后访问时间

os.path.getctime(filename))

获取文件最后改变时间

os.path.getmtime(filename)

获取文件最后修改时间

os.path.getsize(filename)

获取文件大小

getctime与getmtime都是获文件最后修改时间,区别在哪里?文件修改方式:

1>文件内容修改;对两个方法获取时间都有影响;

2>文件权限,用户修改;只对getctime获取时间有影响;

使用Python代码验证:

import os

path = '/home/linux/test/1.txt'

#获取文件修改时间

print('ctime:',os.path.getctime(path), 'mtime:', os.path.getmtime(path))

#修改文件权限

os.chmod(path, 777)

#获取文件修改时间

print('ctime:',os.path.getctime(path), 'mtime:', os.path.getmtime(path))

#获取文件大小

print(os.path.getsize(path))

输出结果:

ctime: 1554518401.870203 mtime: 1554518401.870203

ctime: 1554518438.9467654 mtime: 1554518401.870203

5

3:其他一些方法

方法

说明

os.system(command)

执行命令

os._exit(status)

退出当前进程,需要添加退出状态

os.getenv(key, default=None)

获取指定环境变量

os.putenv(name, value, /)

设置指定环境变量

os.environ

环境变量获取与设置

os._exit可以直接让当前运行程序退出,并能够添加退出状态;

我们首先来看system的使用,我们要在一直指定目录创建文件,

linux下创建目录的shell 命令:touch fname;

path = '/home/linux/test/tmp'

print(os.listdir(path))

fname = os.path.join(path, '1.txt')

print(fname)

#创建文件

os.system('/usr/bin/touch %s'%fname)

print(os.listdir(path))

输出结果:

[]

/home/linux/test/tmp/1.txt

['1.txt']

可以看到使用system在path目录中创建文件。

下面再来看环境变量设置,这里我们有两种方式获取环境变量:

1>os.getenv,根据环境变量名称直接获取,如果没有获取值为None

2>os.environ,获取系统所有环境变量,可以使用字典方式去获取设置环境变量;

对应设置环境变量,os.putenv对于某些平台可能不支持,可以使用os.environ设置;

下面我们拉具体操作:

print('HOME=', os.getenv('HOME'))

#设置环境变量

os.putenv('Test', 'testval')

#获取环境变量

print('Test=', os.getenv('Test'))

#使用environ

print('environ[HOME]=', os.environ['HOME'])

#设置环境变量Test

os.environ['Test'] = 'testval'

#获取环境变量

print('Test=', os.getenv('Test'))

可以看到,在ubuntu中使用putenv不生效,我们可以使用os.environ替换。

os模块还有很多其他常用方法与属性,遇到问题可以查阅官网文档。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值