python os.open 用处

注:os.open 是 POSIX 的低层次的系统调用

  这两天在看shadowsocks的源码学习,看到里面的文件的读写用到了 os.open 而不是平常使用的open.所以,很奇怪。然后,大致发现了这个好处。

f=open(‘data.txt‘,‘w‘)

如果你调用了普通的open,且你本来没有‘data.txt’ 这个文件,那么会自动创建一个‘data.txt’ 的文件。你可以看到默认的权限是:

-rw-rw-r-- 1 yaoge yaoge    7  5月 11 00:07 data.txt

但是在这里因为涉及记录shadowsocks的log,应该尽可能的减少权限。

所以调用os.open 可以自己定义新创建文件的权限。

import stat
import os
fd=os.open(‘data.txt‘,os.O_RDWR|os.O_CREAT,
                   stat.S_IRUSR | stat.S_IWUSR)
os.write(fd,bytes(‘123456‘))

-rw------- 1 yaoge yaoge    7  5月 11 00:07 data.txt

其他:

在源码中还看到一些用法,记录一下

#在调用exec前,自动帮你关闭文件描述符 就相当于在exec前的代码增加os.close(fd)
fcntl.fcntl(fd,fcntl.F_SETFD,fcntl.FD_CLOEXEC)

劝告性锁

# 互斥锁定#无法建立锁定时,此操作可不被阻断,马上返回进程
# os.SEEK_SET - 文件的开头, 可以用 0 代替
 fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB,
                 0, 0, os.SEEK_SET)

时间: 2024-10-10 22:20:15

python os.open 用处的相关文章

Python——os.path.dirname(__file__) 与 os.path.join(str,str)

Python os.path.dirname(__file__) Python os.path.join(str,str) (1).当"print os.path.dirname(__file__)"所在脚本是以完整路径被运行的, 那么将输出该脚本所在的完整路径,比如: python d:\pythonSrc\test\test.py 那么将输出 d:\pythonSrc\test (2).当"print os.path.dirname(__file__)"所在脚本

python os库学习笔记

os.getcwd(): 获取当前目录 os.name: 获取当前使用的操作系统 eg: print os.name os.remove(): 删除指定文件 eg: os.remove('test.txt') os.removedirs(): 删除指定目录 eg: os.removedirs('testcase') os.system(): 运行shell命令 eg: os.system('javac') os.mkdir(): 创建一个新目录  eg: os.mkdir("testcase&q

python os.path模块常用方法详解

python os.path模块常用方法详解 1.   os.path.abspath(path)   返回path规范化的绝对路径. >>> import os    >>> os.path.abspath('pjc.txt')     '/home/pjc/pjc.txt' >>> os.path.abspath('c:\\test.csv')         #Windows主机指定完美的路径    'c:\\test.csv' 2.os.pat

python os模块学习

一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台.如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'. 2.os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径. 3.os.listdir() 返回指定目录下的所有文件和目录名. >>> os.listdir(os.getc

python os的一点心得

前几天做了一个文件替换功能用到些python os的功能,感觉python os模块的功能非常的强大,如果你希望你的python程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和 Windows下运行,看到这里觉得python的跨平台的强大把,精彩还在后面: 下面列出我经常用到的python os模块的方法和大家一起分享下,如果你用到些比较好的python os方法,可以发到python 自由人社区 1. os.getc

python os、sys模块、时间模块、正则表达式

python os.sys模块 OS模块是Python标准库中的一个用于访问操作系统功能的模块,OS模块提供了一种可移植的方法使用操作系统的功能.使用OS模块中提供的接口,可以实现跨平台访问.但是在OS模块中的接口并不是所有平台都通用,有些接口的实现是依靠特定平台下的接口的.在OS模块中提供了一系列访问操作系统功能的接口,便于编写跨平台的应用. OS模块常用命令 os.getcwd()--得到当前工作的目录 os.chmod("usr/local",7) --给文件/目录加权限 os.

关于python -os.mkdir(str)方法的使用记录

这几天在学习python,从昨天开始安装了ubuntu系统以后,就开始研究这个备份文件的例子,可是无论如何,总是不成功,不是说 OSError: [Errno 2] No such file or directory: 就是说 OSError: [Errno 13] Permission denied: 这些错误都是因为一个os.mkdir()的系统模块的方法,终于是把我惹急了,在这个方法之前添加了测试输出语句,完全可以执行,很明显就是这个方法搞得不对,google了一下os.mkdir();找

Python OS 文件/目录方法

Python OS 文件/目录方法 os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作目录 3 os.chflags(path, flags) 设置路径的标记为数字标记. 4 os.chmod(path, mode) 更改权限 5 os.chown(path, uid, gid) 更改文件所有者 6 os.chroot(path) 改变当前进程的根

python os.path 模块

os.path模块用法: 1, os.path.basename() >>> os.path.basename('/share/Public/cmiao')'cmiao' basename()函数并不会去判断这个路径是否存在,它只是简单的将最后一个/后面的作为文件名返回.至于是不是它不管>>> os.path.basename('/share/Public/cmiao/')'' 由于最后一个/没有东西,他就认为这个目录路径,没有文件名.所以返回了空字符串 2, os.p