os sys signal模块

python的os模块提供一些系统api,sys模块主要针对解释器的设置,运行是的动态信息。

下面记录几个有用的方法。

1、当我们打开一个文件的时候,有只读方式,写方式,读写方式,等等,如果我们是以只读方式打开的,那么在写入文件的时候肯定得出错,怎么把这个容错机制实现,一般的方法,可以使用异常捕捉IOError。这里介绍一个更友好的方式,os.access(path, mode)

1、os.W_OK 可写

2、os.R_OK  可读

3、os.F_OK  路径存在

4、os.X_OK 可执行

<span style="font-size:18px;">#利用异常方式</span>
<span style="font-size:18px;">try:
    fp = open("myfile")
except IOError as e:
    if e.errno == errno.EACCES:
        return "some default data"
    # Not a permission error.
    raise
else:
    with fp:
        return fp.read()</span>
<span style="font-size:18px;">#利用os的api</span>
<span style="font-size:18px;">if os.access("myfile", os.R_OK):
    with open("myfile") as fp:
        return fp.read()
return "some default data"</span>

这样代码量就小了很多,可读性也强了.

2、

os.chdir(path) 进入某个路径下,

扫描二维码关注公众号,回复: 10715071 查看本文章

os.remove(path) 删除某个path

os.getcwd()  得到当前路径

.......

3、sys.exit()退出程序

4、有时候我们需要捕捉键盘的ctrl+c,有两种思路.

1、一种是利用异常,KeyboardError.

2、利用signal模块的信号量.

5、我们的文件对象已经是实现了上下文协议的,也就是:

<span style="font-size:18px;">with open("eggs", "w+") as eggs:
    ....</span>

这样有一个好处,就是不用管文件有没有关闭,就算在with下面出现了异常,那么在退出with上下文的时候, 会自动的帮你清理资源, 比如在这里是关闭文件.

要实现上下文协议, 就要重写 __exit__()和__enter__方法, 换一句话就是实现了这两个方法的对象,就能够用在with的上下文环境中了.


发布了44 篇原创文章 · 获赞 3 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qiya2007/article/details/26614269