最孤单的人分两种,一种恨不得全世界都跟他一样倒霉,一种则希望别人能幸福,因为看到幸福的人,他也略略觉得温暖。
import sys
import os
reload(sys)
sys.setdefaultencoding('utf-8')

判断文件开头结尾

一般来说,此方法应用于那些判断处理文件,或者对文本处理做判断。
判断字符串的开头使用startswith(),判断字符串的结尾使用endswith(0方法。说教无益,上代码。

data_str='langzi'
if data_str.startswith('l'):
    print True
if data_str.endswith('i'):
    print True

运行结果:

True
True

当然括号内还可以加上元组,只要元组内的元素某一个元素满足要求就返回True。

if data_str.endswith(('l','2','i')):
    print True

运行结果:

True

打印当前目录下的所有文件

当该目录下的文件存在中文名的时候,在Python2中输出结果会乱码显示。

for x in os.listdir('.'):
    print x

运行结果:

�ָ����ı��ַ���.py
��Ƭ����  ����ʡ�ڴ�������.py
�б� �ֵ�  ������.py
�ж��ַ����Ŀ�ͷ���β.py
����������������.py
�ɵ������� �͵���������.py
ͬʱ�����������.py
�ֵ��б�ɸѡ����.py
�ַ�������.py
�����ֵ��ֵ����.py
������.py
����������  yield.py
ͳ�Ƴ��ִ���.py
������.py

这里稍微引申一下被人诟病的编码问题,Python2中字符串都是以Unicode编码储存在内存中,但是在win下的命令窗口编码是gbk编码,所以会乱码。

主要说一下decode和encode这两个方法,decode(‘gbk’)的意思就是把gbk编码的字符串转换成unicode编码的字符串,也就是俗称的编码,encode(‘utf-8’)的意思就是把unicode编码的字符串转换成utf-8编码,也就是俗称的解码。

解决乱码问题的办法

for x in os.listdir('.'):
    print x.decode('gbk').encode('utf-8')

运行结果:

分割拆分文本字符串.py
切片操作  (节省内存做法).py
列表 字典  的排序.py
判断字符串的开头与结尾.py
反向迭代和正向迭代.py
可迭代对象 和迭代器对象.py
同时迭代多个对象.py
字典列表筛选数据.py
字符串对齐.py
按照字典的值排序.py
生成器.py
生成器函数  yield.py
统计出现次数.py
迭代器.py

实际案例

要求:打印当前目录下所有的py文件。
困惑:无
分析:使用os.listdir()获取文件名,然后用endswith()判断是否为py文件。

for x in  [name.decode('gbk').encode('utf-8') for name in os.listdir('.') if name.endswith('.py')]:print x