目的:有时候需要一些系统的信息或者执行不是python的文件,这时候需要通过os模块调用它们。
环境:windows 7 Python 3.5.3
情景:
1)我通过python处理生成一个系统可以直接运行的文件,如bat批处理,需要执行它;
2)我对批处理比较熟悉,想要在python执行命令并获得它的返回信息。
这两种情况都需要导入os模块:
第一种情况:
os.open(file, flags[, mode]);
可以打开系统中的文件,参数如下:
-
file -- 要打开的文件
-
flags -- 该参数可以是以下选项,多个使用 "|" 隔开:
-
os.O_RDONLY: 以只读的方式打开
-
os.O_WRONLY: 以只写的方式打开
-
os.O_RDWR : 以读写的方式打开
-
os.O_NONBLOCK: 打开时不阻塞
-
os.O_APPEND: 以追加的方式打开
-
os.O_CREAT: 创建并打开一个新文件
-
os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
-
os.O_EXCL: 如果指定的文件存在,返回错误
-
os.O_SHLOCK: 自动获取共享锁
-
os.O_EXLOCK: 自动获取独立锁
-
os.O_DIRECT: 消除或减少缓存效果
-
os.O_FSYNC : 同步写入
-
os.O_NOFOLLOW: 不追踪软链接
-
-
mode -- 类似 chmod() , 这个参数在linux中常用,默认0777
返回值
返回新打开文件的描述符。
这里举两个例子:
第一种情况:
类似open()操作文本文件
1
2
|
with os.
open
(
'test.txt'
, os.O_RDWR|os.O_CREAT) as f:
os.write(f,
'This is a test.'
)
|
恩,就是这样,用起来感觉比open()麻烦(私链)。
第二种情况:
os.popen(command[, mode[, bufsize]])
我想获得当前的用户名:
在windows 中 echo %username% 可以输出当前的用户名
1
|
user
=
os.popen(
' echo %username%'
).read()
|
恩,就是这样,组合使用感觉还不错。