目的:有时候需要一些系统的信息或者执行不是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
返回值
返回新打开文件的描述符。
这里举两个例子:
1)类似open()操作文本文件
with os.open(‘test.txt‘, os.O_RDWR|os.O_CREAT) as f: os.write(f, ‘This is a test.‘)
恩,就是这样,用起来感觉比open()麻烦(链接)。
2)执行已经存在的批处理文件
os.open(‘test.bat‘)
恩,很简单的一句。
第二种情况:
os.popen(command[, mode[, bufsize]])
我想获得当前的用户名:
在windows 中 echo %username% 可以输出当前的用户名
user = os.popen(‘ echo %username%‘).read()
恩,就是这样,组合使用感觉还不错。
时间: 2024-10-20 15:52:22