Python之OS模块

Zss 发表于:

Os模块是python系统与操作系统交互的一个接口

1.运行系统的shell命令,并且直接显示信息:os.system(‘cmd’)

a = os.system('cd /home && cd iperf && ls')

print(a)   这里的a不会将系统返回的信息给复制给a,返回的而是一个0,这是和popen的区别

这里的cmd如果需要使用多条命令的话 可以这样子,os.system(‘cd /home && ls’),不同的命令之间只需要使用&&来连接起来

 

2.另外一种运行系统shell的方法,他会将系统返回的信息一起返回,这时就可以将他给赋值

result = os.popen('cd /home && cd iperf && ls').read()
print(result)

——————————————————-

还有一种调用系统命令的方法不过不是os模块,是commonds模块

getoutput 获取执行命令后的返回信息
getstatus 获取执行命令的状态值(执行命令成功返回数值0,否则返回非0)
getstatusoutput 获取执行命令的状态值以及返回信息

import commonds
status, output = commands.getstatusoutput('date')
print status # 0
print output # 2018 05月 7日 星期四 19:26:21 CST

——————————————————-

再来一种运行cmd的方式,而且通过这个模块可以获取到cmd窗口里面的信息,这是os模块所做不到的  使用到 subprocess模块

import subprocess  
cmd = 'cmd.exe c:\\sam.bat'  
p = subprocess.Popen("cmd.exe /c" + "c:\\sam.bat abc", stdout=subprocess.PIPE, stderr=subprocess.STDOUT)  

curline = p.stdout.readline()  
while(curline != b''):  
    print(curline)  
    curline = p.stdout.readline()  
      
p.wait()  
print(p.returncode)

sam.bat文件

echo Hello world!

echo show %1%

运行后输出如下结果:

b'\r\n'  
b'c:\\Python34>echo Hello world! \r\n'  
b'Hello world!\r\n'  
b'\r\n'  
b'c:\\Python34>echo show abc \r\n'  
b'show abc\r\n'  
0

4.os.getcwd()  它会返回一个当前的工作的目录,也就是当前py文件的目录

5.os.remove()删除指定的文件

os.remove("C:\Users\paul\Desktop\IMG_0210.PNG")

6.os.listdir(os.getcwd()) 将一个路径下的所有文件以列表的方式返回

import os, sys

# 列出目录
print "目录为: %s" %os.listdir(os.getcwd())

# 移除
os.remove("aa.txt")

# 移除后列出目录
print "移除后 : %s" %os.listdir(os.getcwd())
执行以上程序输出结果为:

目录为:
[ 'a1.txt','aa.txt','resume.doc' ]
移除后 : 
[ 'a1.txt','resume.doc' ]

7.os.path.exists(‘path’)   判断一个路径是否存在  存在返回Ture  不存在返回False

8.os.path.isflie(‘path’)  判断一个文件是否存在    存在返回Ture  不存在返回False

9.os.makedirs(‘path’)  创建一个多层递归的目录  也就是说可以直接创建多层的目录,上一层不存在也可以

补个东西  在创建文件夹时使用中文名  可以这样子来解决乱码

path = '{}/{}'.format(str(path),str(title_url[0]).encode('gbk'))#创建中文目录

10.os.path.split()——返回路径的目录和文件名二元数组

os.path.split("C:\\Users\\paul\\Desktop\\1.txt")
('C:\\Users\\paul\\Desktop', '1.txt')
os.path.split("C:\\Users\\paul\\Desktop\\")
('C:\\Users\\paul\\Desktop', '')

11.os.path.getsize()——获得文件的大小,如果为目录,返回0

os.path.getsize("C:\\Users\\paul\\Desktop\\1.txt")

12.os.path.abspath()——获得绝对路径

os.path.abspath(".")
------------------------------
'C:\\Python27'

13.os.path.join(path, name)——连接目录和文件名    将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

os.path.join('c:\\', 'csv', 'test.csv')
----------------------------------------
'c:\\csv\\test.csv'
>>> os.path.join('windows\temp', 'c:\\', 'csv', 'test.csv')
-----------------------------------------
'c:\\csv\\test.csv'
>>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c')
------------------------------------------------------------
'/home/aa/bb/c

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: ('.')
os.pardir  获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")  运行shell命令,直接显示
os.popen("bash command).read()  运行shell命令,获取执行结果
os.environ  获取系统环境变量

os.path
os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。
                        即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小


os.name    使用的平台Windows 返回 ‘nt'; Linux 返回’posix'
os.getcwd()   当前工作的目录   current work dir
os.listdir()  目录下所有的文件和目录名
os.remove()    删除指定文件
os.rmdir()     删除指定目录
os.mkdir()     创建目录    只能创建一层, 递归创建用os.makedirs()
os.path.isfile()      判断指定对象是否为文件
os.path.isdir()       判断指定对象是否为目录  
os.path.exists()       指定对象是否存在
os.system()           执行shell命令  os.system("echo 'hello'")
若想调用python之前的变量 如下:
name = wang 
os.envirom['name'] = str(name)
os.system('echo $name')
os.chdir()     改变目录到指定目录
os.path.getsize    获得文件的大小,如果是目录,则返回
os.path.abspath()    获得绝对路径
os.path.join(path,name)   连接目录和文件名
os.path.basename(path)   返回文件名
os.path.dirname(path)    返回文件路径
os.path.split(path)      把目录与文件区分开