1. #encoding=utf-8
  2.  
  3. from urllib.request import urlopen
  4. import random
  5. import os
  6.  
  7. '''
  8. 1. 定义一个fuc(url, folder_path)
  9. 获取url地址的内容,保存到folder_path的文件目录下,并随机生成一个文件名。
  10. '''
  11. def save_url_content(url,folder_path=None):
  12. if not (url.startswith('http://') or url.startswith('https://') ):
  13. return u'url地址不符合规格'
  14. if not os.path.isdir(folder_path):
  15. return u'folder_path非文件夹'
  16. d = urlopen(url)
  17. content = d.read()
  18. rand_filename = 'test_%s'%random.randint(1,1000)
  19. file_path = os.path.join(folder_path,rand_filename)
  20. d = open(file_path,'wb')
  21. d.write(content)
  22. d.close()
  23. return file_path
  24.  
  25. print (save_url_content('http://www.baidu.com','tmp'))
  26.  
  27. '''
  28. 3. 定义一个func(url),分析该url内容里有多少个链接。
  29. '''
  30. def get_url_count(url):
  31. if not (url.startswith('http://') or url.startswith('https://') ):
  32. return u'url地址不符合规格'
  33. d = urllib.urlopen(url)
  34. content = d.read()
  35. return len(content.split('<a href=')) - 1 # str 到bytes 而精致没解决
  36. print (get_url_count('http://hi.baidu.com/jxq61/item/149d29cc8d52513d4594168f'))
  37.  
  38. '''
  39. 2. 定义一个func(folder_path),合并该目录下的所有文件,生成一个all.txt。
  40. '''
  41. def merge(folder_path):
  42.  
  43. if not os.path.exists(folder_path):
  44. return 'not exists'
  45.  
  46. for f in os.listdir(folder_path):
  47. file_path = os.path.join(folder_path,f)
  48. if os.path.isdir(file_path):
  49. merge(file_path)
  50. else:
  51. merge_file = open('merge_test','ab+')
  52. content = open(file_path,'rb').read()
  53. merge_file.write(content)
  54. merge_file.close()
  55.  
  56. merge('tmp')
  57.  
  58. '''
  59. 4. 定义一个func(url), 获取他?后的参数,并返回成一个dict。
  60. '''
  61.  
  62. import urlparse
  63. # urlparse模块主要是把url拆分为6部分,并返回元组。
  64. # urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True)
  65. def qs(url):
  66. query = urlparse.urlparse(url).query
  67. return dict([(k,v[0]) for k,v in urlparse.parse_qs(query).items()])
  68.  
  69. print (qs('http://126.com'))
  70. print (qs('http://api/api?f=5&g=6&y=5'))
  71. print (qs('http://api/api?11=53'))
  72.  
  1. '''
  2. 5. 定义一个func(folder),删除该folder下的所有文件。50421
  3. '''
  1. #使用递归去解决
  2. def delete(folder_path):##习题5
  3. if not os.path.exists(folder_path):
  4. return 'not exists'
  5.  
  6. for f in os.listdir(folder_path):
  7. file_path = os.path.join(folder_path,f)
  8. if os.path.isdir(file_path):
  9. delete(file_path)
  10. else:
  11. os.remove(file_path)
  12.  
  13. delete('/tmp/5')

Python 函数习题的更多相关文章

  1. Pass算子python 函数

    Pass算子python 函数 函数 函数是代码的一种组织形式 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数,无返回结果 ...

  2. python 函数之day3

    一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...

  3. Python函数作用域的查找顺序

    函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...

  4. Python函数讲解

    Python函数

  5. Python函数信息

    Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...

  6. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  7. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  8. Python函数解析

    对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...

  9. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

随机推荐

  1. raw_in_fields

    在admin后台类中加入raw_id_fields(只适用于外键)后,会显示外键的详细信息

  2. JAMstack 技术要点

    1.  简要说明 Modern web development architecture based on client-side JavaScript, reusable APIs,and preb ...

  3. art-template前端高性能模板

    template.js资源 /*!art-template - Template Engine | http://aui.github.com/artTemplate/*/!function(){fu ...

  4. Ubuntu15.10下Hadoop2.6.0伪分布式环境安装配置及Hadoop Streaming的体验

    Ubuntu用的是Ubuntu15.10Beta2版本,正式的版本好像要到这个月的22号才发布.参考的资料主要是http://www.powerxing.com/install-hadoop-clus ...

  5. Java 传递可变参数和方法重载

    形式:类型... 参数名 示例:public void show(int... a) {}; 可变参数在方法中被当作数组来处理 可变参数传值的四种方式: 一个值也不传,可变参数会接收到长度为0的数组 ...

  6. c# HttpWebResponse 调用WebApi

    public static class WebApiCaller { public static string HttpPost(string url, string body) { try { // ...

  7. Data_Structure-绪论作业

    一.作业题目 仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算: 构造有理数T,元素e1,e2分别被赋以分子.分母值 销 ...

  8. 在rac集群上开启OEM

    由于安装rac的时候没有开启oem,这里开启oem,方便管理 [oracle@rac01 ~]$ emca -config dbcontrol db -repos create -cluster ST ...

  9. Python Twisted架构英文版

    原作出处:twisted-intro 作者:Dave 转载声明:版权归原作出处所有,转载只为让更多人看到这部优秀作品合集,如果侵权,请留言告知 Twisted Introduction This mu ...

  10. Android 4 学习(13):Local Broadcast Manager & Intent Filter

    参考<Professional Android 4 Development> Local Broadcast Manager 简介 Local Broadcast Manager由Andr ...