python之os模块
在查找大量文件或者获取相关路径等操作时主要依赖于OS模块。
1、查询当前使用平台
1
2
3
|
>>>os.name 'posix' # 代表 Linux ‘nt’ # 代表windows |
2、当前路径和文件
1
2
3
4
5
6
|
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、绝对路径
1
2
3
4
5
|
os.path.abspath(path) #返回path的绝对路径 >>> os.chdir( '/usr/local/src' ) # 将当前的工作目录更改为/usr/local/src >>> os.path.abspath(os.getcwd()) '/usr/local/src' |
4、执行系统命令
1
2
3
4
5
|
os.system() # 运行shell命令 >>>os.system( 'cmd' ) # 在Windows下打开终端 >>>os.system( 'ls' ) #在Linux下查看当前目录下的所有文件 apache - jmeter - 4.0 |
5、查看文件名或者目录
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> 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' <br><br>os.walk(path) # 递归的返回paht下的目录(包含path目录)、子目录、文件名的三元组,是一个迭代器<br>>>>os.walk('/opt')<br><generator object walk at 0x7f6b03c23cd0> |
6、创建目录
1
2
3
4
|
os.mkdir(path[,mode]) #以数字mode的mode创建一个名为path的文件夹<br>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、删除文件或目录
1
2
3
4
5
6
7
8
9
10
|
>>> 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、文件相关操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
>>> 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、文件或目录重命名
1
2
3
4
5
6
7
|
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定义了一组文件、路径在不同操作系统中的表现形式参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Linux环境下 >>> os.sep '/' >>> os.extsep '.' >>> os.pathsep ':' >>> os.linesep '\n' Windows环境下 >>> os.sep '\\' >>> os.extsep '.' >>> os.pathsep ';' >>> os.linesep '\r\n' |