python学习笔记—— os 模块

Python的OS模块提供了处理文件和目录的系统编程功能,常用于自动化测试中的文件操作。关键函数包括:os.getcwd()获取当前目录,os.chdir()切换目录,os.makedirs()创建多层目录,os.remove()删除文件,os.listdir()列出目录内容,os.path.join()拼接路径,以及os.path.isfile()和os.path.isdir()检查文件或目录等。
摘要由CSDN通过智能技术生成

OS模块

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

  • 在自动化测试中,经常需要查找操作文件,比如查找配置文件(从而读取配置文件的信息),查找测试报告等等,经常会对大量文件和路径进行操作,这就需要依赖os模块。

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

os 模块中常用的属性和函数

1、os.getcwd() 查看当前所在目录

查看当前所在目录(路径);

import os
print(os.getcwd())
---------------------------------
/home

2、os.chdir() 切换目录

切换目录(路径);

import os
os.chdir(r'/etc/sysconfig/')
print(os.getcwd())
-------------------------------------------------
/etc/sysconfig

3、os.curdir、os.pardir

返回当前目录字符串名、返回当前目录的父目录的字符串名;

 import os
 print(os.curdir)
 print(os.pardir)
 ----------------------------------------
.
..

4、os.makedirs()

生成一个多层递归目录

 import os
 os.makedirs('/home/test/xuan')

5、os.removedirs()

若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推;

 import os
 os.removedirs('test/xuan')

6、os.mkdir()

  • 创建一个目录;
>>> import os
>>> os.mkdir('test')        #只能创建一个目录
>>> os.mkdir('abc/123/xxx')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'abc/123/xxx'

7、os.rmdir()

  • 删除一个目录,若目录不为空则无法删除,报错;
>>> import os
>>> os.mkdir('test/abc')    #在test下创建一个abc;
>>> os.rmdir('test')        #无法删除test;
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: 'test'
>>> os.rmdir('test/abc')    #可以删除abc,因为abc目录下为空;
>>> 

8、os.listdir()

  • 显示指定目录下,所有的文件和子目录,包括隐藏文件;
 import os
 dirs = os.listdir('/root')
 print(dirs)

在这里插入图片描述
在这里插入图片描述

9、os.remove()

  • 删除文件,不能删除文件夹;
>>> import os
>>> print(os.listdir('/test'))
['123', 'hello.txt', '.file', 'qwe']
>>> os.remove('/test/.file')
>>> print(os.listdir('/test'))
['123', 'hello.txt', 'qwe']
>>> os.remove('/test')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IsADirectoryError: [Errno 21] Is a directory: '/test'

10、os.stat()

获取文件/目录信息,并可以获取到文件的大小;

 import os
 info = os.stat('/test')
 print(info)
 --------------------------------------
os.stat_result(st_mode=16877, st_ino=102688292, st_dev=64769, st_nlink=4, st_uid=0, st_gid=0, st_size=42, st_atime=1562827140, st_mtime=1562827137, st_ctime=1562827137)

 print(info.st_size)
 -----------------------
42

11、os.sep

输出操作系统特定的路径分隔符 ,如:windows 为‘\’,Linux为‘/’;

 import os
 s = os.sep
 print(s)
 ----------------
/

12、os.pathsep

  • 输出用于分割文件路径的字符串;
 import os
 print(os.pathsep)
 ---------------------------------
:

13、os.system()

运行shell命令,直接显示(相当于启动一个全新的shell,然后去执行那条命令,命令执行完成过后,shell直接退出);

>>> import os
>>> print(os.system('ls /test/'))    #调用系统命令
123  hello.txt	qwe
0
 
 
[root@server-7 test]# ls
123  hello.txt  qwe

14、os.environ

获取操作系统的环境变量;

 import os
 print(os.environ)
 --------------------------------------------
environ({'XDG_SESSION_ID': '3393', 'HOSTNAME': 'server-7.dev', 'TERM': 'xterm', 'SHELL': '/bin/bash', 'HISTSIZE': '1000', 'SSH_CLIENT': '61.130.182.194 54987 22', 'SSH_TTY': '/dev/pts/1', 'HISTFILESIZE': '10000', 'JRE_HOME': '/usr/java/jdk1.8.0_171/jre', 'USER': 'root', 'JAVA_BIN': '/usr/java/jdk1.8.0_171/bin', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:', 'MAIL': '/var/spool/mail/root', 'PATH': '/usr/java/jdk1.8.0_171/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/java/jdk1.8.0_171/jre/bin:/usr/local/node/bin:/root/bin', 'PWD': '/home', 'JAVA_HOME': '/usr/java/jdk1.8.0_171', 'LANG': 'en_US.UTF-8', 'HISTCONTROL': 'ignoredups', 'SHLVL': '1', 'HOME': '/root', 'GREP_OPTIONS': '--color=auto', 'LOGNAME': 'root', 'CLASSPATH': '.:/usr/java/jdk1.8.0_171/lib/dt.jar:/usr/java/jdk1.8.0_171/lib/tools.jar', 'SSH_CONNECTION': '61.130.182.194 54987 10.23.230.201 22', 'LESSOPEN': '||/usr/bin/lesspipe.sh %s', 'XDG_RUNTIME_DIR': '/run/user/0', 'HISTTIMEFORMAT': '%Y-%m-%d %H:%M:%S ', '_': '/usr/local/python3/bin/python3.6', 'OLDPWD': '/root'})

15、os.path.split(path)

将path分割成目录和文件名二元组返回;

 import os
 print(os.path.split('/test/123/abc'))
 ----------------------------------------
('/test/123', 'abc')

16、os.path.abspath(path)

返回path规范化的绝对路径;

 import os
 print(os.path.abspath('abc'))
 ------------------------------------------------
/test/123/abc

17、os.path.dirname(path)

返回path的目录;

 import os
 print(os.path.dirname('/test/123/abc'))
 -------------------------------------------------
/test/123

18、os.path.basename(path)

返回path最后的文件名(一个绝对路径只返回最后的文件名);

 import os
 print(os.path.basename('abc'))
 print(os.path.basename('/test/123/abc'))
 ----------------------------------------------------
abc
abc

19、os.path.exists(path)

判断路径是否存在,如果path存在,返回True;如果不存在,返回Flase;

 import os
 print(os.path.exists('/test/123/abc'))
 -------------------------------------------------------
True

20、os.path.isabs(path)

判断是否是绝对路径,如果是,则返回True;

 import os
 print(os.path.isabs('abc'))
 ---------------------------------
False
 print(os.path.isabs('/test/123/abc'))
 -----------------------------------------
True

21、os.path.isfile(path)

判断是否是一个文件,如果是则返回True,否则返回False;

 import os
 print(os.path.isfile('abc'))
 ----------------------------------------------------
True

 print(os.path.isfile('/test/qwe'))
 --------------------------------------------------------
False

22、os.path.isdir(path)

判断是否是一个存在的目录;

 import os
 print(os.path.isdir('/test/qwe'))
 --------------------------------------
True

 print(os.path.isdir('/test/abc'))
 ----------------------------------------
False

23、os.path.join(path1,[path2],[path3])

将路径和文件名分为一个列表中的两个元素,将它们拼起来,若其中有绝对路径,则之前的path将会被删除.;

>>> import os
>>> print(os.path.join('/test/','hello.txt'))
/test/hello.txt
>>> print(os.path.join('/test/123','hello.txt'))
/test/123/hello.txt

24、os.path.getatime(path)

返回path所指向的文件或者目录的最后存取时间;

>>> import os
>>> print(os.path.getatime('/test/qwe'))
1562838740.7342396

25、os.path.getmtime(time)

返回path所指向的文件或者目录的最后修改时间;

>>> import os
>>> print(os.path.getmtime('/test/qwe'))
1562838533.447562

26、os.popen(‘ls’)

相当于打开了一个临时的文件存储打开的目录(可以赋给变量,字符串的形式);

>>> import os
>>> a = os.popen('ls').read()
>>> a
'douban\nfull_stack\njf_blog\nmysql57-community-release-el7-10.noarch.rpm\nnode-v8.9.4-linux-x64\n'
>>> print(a)
douban
full_stack
jf_blog
mysql57-community-release-el7-10.noarch.rpm
node-v8.9.4-linux-x64
 
 
 
[root@server-7 ~]# ls -l
total 32
drwxr-xr-x 3 root root    36 Jun 23 19:51 douban
drwxr-xr-x 2 root root    22 Jul 10 14:02 full_stack
drwxr-xr-x 7 root root  4096 Jul  5 18:10 jf_blog
-rw-r--r-- 1 root root 25548 Apr  7  2017 mysql57-community-release-el7-10.noarch.rpm
drwxrwxr-x 7  500  500   111 Jun  5 15:04 node-v8.9.4-linux-x64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值