在查找大量文件或者获取相关路径等操作时主要依赖于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') # 返回文件的大小,若是目录则返回07209>>> os.path.exists('/opt/mail.sh') # 判断文件或者目录是否存在,存在则返回True,否则返回FalseTrue>>> os.path.exists('/opt/a')False>>> os.path.isfile('/opt/mail.sh') # 判断是否为文件,是True 否 FalseTrue>>> os.path.isdir('/opt') # 判断是否为目录,是True 否 FalseTrueos.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 到 dstos.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'
'Windows环境下>>> os.sep'\'>>> os.extsep'.'>>> os.pathsep';'>>> os.linesep'
' |