码迷,mamicode.com
首页 > 编程语言 > 详细

《可爱的Python》读书笔记(八)

时间:2018-03-26 00:48:19      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:stack   chardet   

问题的最佳的解决方案,就是找到那段别人解决相似问题的代码。


今天做些能回顾所学知识点的小练习,类似的问题参考别人的代码,修改成自己容易理解的模样。

1、实现简单的栈。put(item)实现数据item插入栈中;get()实现从栈中取一个数据。

# -*- coding: utf-8 -*-


class MyStack(object):
    '''MyStack
        自定义栈,操作有put(), get()
    '''
    def __init__(self):

        self.head = -1
        self.stack = []
    
    def put(self, item):

        self.head += 1
        self.stack.append(item)
        print('Put %s Success' % item)
    
    def get(self):

        if self.head < 0:
            return "Put Error: The Stack is Overflow!"
        else:
            self.head -= 1
            return self.stack.pop()
        
    def isEmpty(self):

        return self.item == []
        
        
if __name__ == "__main__":
    mystack = MyStack()
    mystack.put('a')
    mystack.put('b')
    print(mystack.get())
    mystack.put('c')
    print(mystack.get())
    print(mystack.get())
    print(mystack.get())

运行结果如下:

Put a Success
Put b Success
b
Put c Success
c
a
Put Error: The Stack is Overflow!


2、判断指定网页使用的编码。

# -*- coding: utf-8 -*-
import sys
import requests
import chardet


def web_detect(url):
    
    #检测网页的编码方式
    
    try:
        response = requests.get(url)
    except:
        print('error')
        return 0
    web= response.content
    response.close()
    codedetect = chardet.detect(web)["encoding"]
    print('%s\t<-\t%s' % (url, codedetect))
    return 1
    
if __name__ == '__main__':

    if len(sys.argv) == 1:
        print('usage:\n\tpython XX.py http://xxx.com')
    else:
        web_detect(sys.argv[1])

运行效果如下:

C:\>python webdetect.py http://blog.51cto.com/9473774
http://blog.51cto.com/9473774   <-      utf-8
C:\>python webdetect.py http://www.163.com
http://www.163.com      <-      GB2312


3、遍历指定目录下的所有文件,找出其中占用空间最大的前3个文件。

# -*- coding: utf-8 -*-
import sys
import os


def get_top_three(path):
    
    d = {}
    for root, dirs, files in os.walk(path):
        for file in files:
            fname = os.path.join(root, file)
            fsize = os.stat(fname).st_size
            d[fname] = fsize
    #print(d)
    f = sorted(zip(d.values(), d.keys()))
    for i in [-1, -2, -3]:
        for j in f[i]:
            print(j)
            
            
get_top_three('E:\\iso\\CentOS-6.8-x86_64-bin-DVD1')

运行结果如下:

146313216
E:\iso\CentOS-6.8-x86_64-bin-DVD1\images\install.img
45373440
E:\iso\CentOS-6.8-x86_64-bin-DVD1\images\efidisk.img
40688737
E:\iso\CentOS-6.8-x86_64-bin-DVD1\isolinux\initrd.img


《可爱的Python》读书笔记(八)

标签:stack   chardet   

原文地址:http://blog.51cto.com/9473774/2091006

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!