Python学习笔记
Python学习笔记
1、IndentationError: unexpected indent你就要知道python编译器是在告诉你“Hi,老兄,你的文件里格式不对了,可能是tab和空格没对齐的问题,你需要检查下tab和空格了”。
2、Python 的stat 模块
1 | #/usr/bin/env python |
stat模块描述了os.stat(filename)返回的文件属性列表中各值的意义.我们可方便地根据stat模块存取os.stat()中的值.
os.stat(path)执行一个stat()系统调用在给定的path上,返回一个类元组对象(stat_result对象,包含10个元素),属性与stat结构成员相关:st_mode(权限模式),st_ino(inode number),st_dev(device),st_nlink(number of hard links),st_uid(所有用户的user id),st_gid(所有用户的group id),st_size(文件大小,以位为单位),st_atime(最近访问的时间),st_mtime(最近修改的时间),st_ctime(创建的时间)
3、Python信号处理模块signal
Python中对信号处理的模块主要是使用signal模块,但signal主要是针对Unix系统,所以在Windows平台上Python不能很好的发挥信号处理的功能。
要查看Python中的信号量,可以使用dir(signal)来查看。
在signal模块中,主要是使用signal.signal()函数来预设信号处理函数
singnal.signal(signalnum, handler)
其中第一个参数是信号量,第二个参数信号处理函数。
下面看个简单的例子,其中
- 定义了一个信号处理函数signal_handler(),用来处理程序接收到信号时执行的操作
- 一段循环等待发送信号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#!/usr/bin/env python
# -*- coding: utf-8 -*-
import signal
import time
def signal_handler(signum, frame):
print('Received signal: ', signum)
while True:
signal.signal(signal.SIGHUP, signal_handler) # 1
signal.signal(signal.SIGINT, signal_handler) # 2
signal.signal(signal.SIGQUIT, signal_handler) # 3
signal.signal(signal.SIGALRM, signal_handler) # 14
signal.signal(signal.SIGTERM, signal_handler) # 15
signal.signal(signal.SIGCONT, signal_handler) # 18
while True:
print('waiting')
time.sleep(1)
运行上面的程序
python test.py
然后另外开一个终端,找到对应的进程,并执行下面的kill操作
1 | kill -1 <pid> |
此时可以看到test.py的输出,打印的就是具体接收到的信号。
这里注意一点就是程序中注册了SIGINT信号,所以在运行程序后使用CTRL+C并不能结束进程,而是仍然打印进程接收到的信号。
signal.alarm()
另外,signal模块提供了一个很有用的函数signal.alarm(),它用于在一定时间后向进程自身发送SIGALRM信号,比如下面的例子设置5秒后向自己发送一个SIGALRM信号。
1 | #!/usr/bin/env python |
4、python os.path模块
1 | os.path.abspath(path) #返回绝对路径 |
5、typeerror ‘builtin_function_or_method’ object has no attribute ‘getitem‘
是因为把path.append(py)
写成了path.append[py]
6、将列表写入文本
1 | list = ['foo', 'bar'] |
7、判断文件或者文件夹是否u你在
1 | import os |
8、在用json.load()判断文件格式是否错误的时候,出现ValueError: No JSON object could be decoded
这个是由于json文件的闭合部分后面不能有,
对于列表最后,添加上一个逗号,对于本身Python中的语法,是允许的,
对于其他语言,比如C语言,是允许的,
但是,在Python 2.7.3中的json库中,是不支持的。