python之os模块

在查找大量文件或者获取相关路径等操作时主要依赖于OS模块。

1、查询当前使用平台

>>>os.name 
'posix' # 代表 Linux
‘nt’ # 代表windows

2、当前路径和文件

os.getcwd() # 返回当前工作目录
os.getcwdu() # 返回一个当前工作目录的Unicode对象。
os.listdir(path) # 返回path目录下的所有文件列表。

>>> os.listdir('/opt')
['.script', 'registry', 'haproxy.cfg', 'chess', 'test', 'gitlog', 'c.txt', 'a.py', 'file.py', 'mail.sh', 'a.txt', 'b.txt', 'a.txt.bak', '.a.txt.swap']

3、绝对路径

os.path.abspath(path) #返回path的绝对路径

>>> os.chdir('/usr/local/src') # 将当前的工作目录更改为/usr/local/src
>>> os.path.abspath(os.getcwd())
'/usr/local/src'

4、执行系统命令

os.system() # 运行shell命令

>>>os.system('cmd') # 在Windows下打开终端
>>>os.system('ls') #在Linux下查看当前目录下的所有文件
apache-jmeter-4.0

5、查看文件名或者目录

>>> os.path.split('/opt/mail.sh')  # 将目录和文件名分开为元组
('/opt', 'mail.sh')

>>> os.path.join('/opt','gitlog','log','20180411.log')  #将path1,path2...进行组合,若path2为绝对路径,则会将path1删除。
'/opt/gitlog/log/20180411.log'
>>> os.path.join('/opt','/gitlog','log','20180411.log')
'/gitlog/log/20180411.log'

>>> os.path.dirname('/opt/gitlog/log/20180411.log') # 返回path中的目录(文件夹部分),结果最后不包含目录‘/’ 或‘’
'/opt/gitlog/log'

>>> os.path.basename('/opt/gitlog/log/20180411.log') # 返回path中的文件名
'20180411.log'

os.walk(path) # 递归的返回paht下的目录(包含path目录)、子目录、文件名的三元组,是一个迭代器
>>>os.walk('/opt')
<generator object walk at 0x7f6b03c23cd0>

6、创建目录

os.mkdir(path[,mode]) #以数字mode的mode创建一个名为path的文件夹
os.mkdir('/opt/os') # 创建目录os,只能创建单层目录 >>> os.makedirs('/opt/o/s/os') # 创建多级目录 >>> os.listdir(os.getcwd()) ['.script', 'registry', 'haproxy.cfg', 'chess', 'test', 'gitlog', 'c.txt', 'a.py', 'file.py', 'mail.sh', 'os', 'o', 'a.txt', 'b.txt', 'a.txt.bak', '.a.txt.swap']

7、删除文件或目录

>>> os.rmdir('/opt/os')  # 删除os目录,只能是一层目录,而且是空目录
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: '/opt/os'

>>> os.remove('/opt/os/a') # 删除文件a (必须是文件)

>>> os.removedirs('/opt/o/s/os') # 删除多级目录,必须为空目录
>>> os.listdir('/opt')
['.script', 'registry', 'haproxy.cfg', 'chess', 'test', 'gitlog', 'c.txt', 'a.py', 'file.py', 'mail.sh', 'os', 'a.txt', 'b.txt', 'a.txt.bak', '.a.txt.swap']

8、文件相关操作

>>> os.path.getmtime('/opt/mail.sh') # 返回文件或目录的最后修改时间,结果为秒数
1523500891.0531387

>>> os.path.getatime('/opt/mail.sh') # 返回文件或目录的最后访问时间,结果为秒数
1523500903.6000335

>>> os.path.getctime('/opt/mail.sh') # 返回文件或目录的创建时间,结果为秒数
1523500891.0711386
# 可以结合time模块使用

>>> os.path.getsize('/opt/mail.sh') # 返回文件的大小,若是目录则返回0
7209

>>> os.path.exists('/opt/mail.sh') # 判断文件或者目录是否存在,存在则返回True,否则返回False
True
>>> os.path.exists('/opt/a') 
False

>>> os.path.isfile('/opt/mail.sh') # 判断是否为文件,是True 否 False
True

>>> os.path.isdir('/opt') # 判断是否为目录,是True 否 False
True

os.chown(path, uid, gid) # 更改文件所有者
os.chmod(path, mode) # 更改权限
os.unlink(path) #删除文件路径
os.utime(path,times) # 返回指定的path文件的访问和修改的时间
os.read(fd, n) #从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串
os.write(fd, str) #写入字符串到文件描述符 fd中. 返回实际写入的字符串长度

9、文件或目录重命名

os.rename(src, dst) #重命名文件或目录,从 src 到 dst
os.renames(old, new) #递归地对目录进行更名,也可以对文件进行更名
>>> os.renames('a.py','/opt/os/aaa.py')
>>> os.listdir('/opt')
['.script', 'registry', 'haproxy.cfg', 'chess', 'test', 'gitlog', 'c.txt', 'file.py', 'mail.sh', 'os', 'a.txt', 'b.txt', 'a.txt.bak', '.a.txt.swap']
>>> os.listdir('/opt/os')
['aaa.py']

10、一些表现形式参数

  os定义了一组文件、路径在不同操作系统中的表现形式参数。

Linux环境下
>>> os.sep
'/'
>>> os.extsep
'.'
>>> os.pathsep
':'
>>> os.linesep
'
'

Windows环境下
>>> os.sep
'\'
>>> os.extsep
'.'
>>> os.pathsep
';'
>>> os.linesep
'
'

 

原文地址:https://www.cnblogs.com/Uncle-Guang/p/8808789.html