(Python第八天)模块

Posted ywangji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Python第八天)模块相关的知识,希望对你有一定的参考价值。

一、模块

为了便于使用、调试以及拥有更好的可读性,我们使用模块来达到目的,模块就是包括Python定义和声明的文件

我们可以由全局变量__name__得到模块的模块名。

2)导入模块

有不同的方式导入模块,甚至可以从模块中导入指定的函数

from module import * 

导入模块中的所有定义

二、包

含有__init__.py  文件的目录可以用来作为一个包,目录里的所有.py文件都是这个包的子模块

实例:mymodule是一个包名,并且bars和utils是里面的两个子模块

如果__init__.py文件内有一个名为__all__的列表,那么只有在列表内列出的名字将会被公开,如果mymodule内的__init__.py文件内含有以下内容:

导入的时候只有simplebar可用,

三、默认模块

1)os模块

getuid()返回当前进程的有效用户id

getpid()返回当前进程的id

getppid()返回父进程的id

uname()返回识别操作系用的不同信息

getcwd()返回当前工作目录

chdir(path)更改当前目录到path

实例:创建一个自己的函数,这个函数打印给定目录中的所有文件和目录,

def view_dir(path=\'.\'):           #默认当前目录
    names = os.listdir(path)
    names.sort()
    for name in names:
        print(name, end =\' \')
    print()  

ps:1)os.listdir()

返回指定路径下的文件和文件夹列表。

用法是:

import os, sys

# 打开文件
path = "/var/www/html/"
dirs = os.listdir( path )

# 输出所有文件和文件夹
for file in dirs:
   print file

2)list.sort()方法

该方法没有返回值,但是会对列表的对象进行排序。

list.sort(cmp=None, key=None, reverse=False)
  • cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

例子:

aList = [123, \'Google\', \'Runoob\', \'Taobao\', \'Facebook\'];
 
aList.sort();
print "List : ", aList
List :  [123, \'Facebook\', \'Google\', \'Runoob\', \'Taobao\']

3)end()

python中“end=”用法:例如print(“#”,end=" \\n")在打印过程中默认换行,print(“#”,end=" ")则在循环中不换行  

2)Requests模块

 Requests是一个第三方Python模块,即需要安装这个模块,是唯一的一个Python HTTP库

1)使用get()获取任意一个网页

实例:

req的text属性存有服务器返回的HTML网页,这个实例可以让我们写一个能够从指定的URL中下载文件的程序

 1 import os
 2 import os.path
 3 import requests
 4 
 5 def download(url):
 6     req = requests.get(url)
 7     # 首先我们检查是否存在文件
 8     if req.status_code == 404:
 9         print(\'No such file found at %s\' % url)
10         return
11     filename = url.split(\'/\')[-1]
12     with open(filename, \'wb\') as fobj:
13         fobj.write(req.content)
14     print("Download over.")
15 
16 if __name__ == \'__main__\':
17     url = input(\'Enter a URL: \')
18     download(url)

1)open()函数用法

①文件操作的流程

#1打开文件,得到文件句柄并赋值给一个变量

#2用过句柄对文件进行操作

#3关闭文件

②关于打开模式

r  只读方式打开文件

rb 以二进制格式打开一个文件用于只读

w 打开一个文件用于写入

w+  打开一个文件用于读写,如果该文件已经存在则将其覆盖,如果该文件不存在,创建新文件

a 打开一个文件用于追加

后面有带b的方式,不需要考虑编码方式

2)url.split(\'/\')[-1]的含义

实例:

url = "http://www.runoob.com/python/att-string-split.html"
path = url.split(\'.\')[-1]
print(path)  

输出

html#该实例以。以分隔符保留最后一段  

url.split(\'/\')[-1]   就是获得一个url最后一个/后的字符串

②split("/")[-1] 和 split("/",-1)的区别

str="http://www.runoob.com/python/att-string-split.html"
print("0:%s"%str.split("/")[-1])
print("1:%s"%str.split("/")[-2])
print("2:%s"%str.split("/")[-3])
print("3:%s"%str.split("/")[-4])
print("4:%s"%str.split("/")[-5])

print("5:%s"%str.split("/",-1))
print("6:%s"%str.split("/",0))
print("7:%s"%str.split("/",1))
print("8:%s"%str.split("/",2))
print("9:%s"%str.split("/",3))
print("10:%s"%str.split("/",4))
print("11:%s"%str.split("/",5))
结果是:

0:att-string-split.html
1:python
2:www.runoob.com
3:
4:http:
5:[\'http:\', \'\', \'www.runoob.com\', \'python\', \'att-string-split.html\']
6:[\'http://www.runoob.com/python/att-string-split.html\']
7:[\'http:\', \'/www.runoob.com/python/att-string-split.html\']
8:[\'http:\', \'\', \'www.runoob.com/python/att-string-split.html\']
9:[\'http:\', \'\', \'www.runoob.com\', \'python/att-string-split.html\']
10:[\'http:\', \'\', \'www.runoob.com\', \'python\', \'att-string-split.html\']
11:[\'http:\', \'\', \'www.runoob.com\', \'python\', \'att-string-split.html\']
即: -1  :全切  0 :不切  1:切一刀  (每一块都保留)

[-1]:将最后一块切割出来    [-2]:将倒数第二块切割出来  (只保留切出来的一块)

3)request   content

request一般情况下text提取出来的可能是乱码,但是content提取出来的不会是乱码

req.text返回的是Unicode型的数据,使用req.content返回的是bytes型的数据,即想提取文本,使用req.text,想提取图片,文件,通过req.content

# 例如下载并保存一张图片

import requests

jpg_url = \'http://img2.niutuku.com/1312/0804/0804-niutuku.com-27840.jpg\'

content = requests.get(jpg_url).content

with open(\'demo.jpg\', \'wb\') as fp:
    fp.write(content)

4)os.path可以检查当前目录是否已经存在相同的文件名

 

 

四、Pycharm中的部分快捷键

1、Ctrl + Enter:在下方新建行但不移动光标;

2、Shift + Enter:在下方新建行并移到新行行首;

3、Ctrl + /:注释(取消注释)选择的行;

4、Ctrl+d:对光标所在行的代码进行复制。

 

以上是关于(Python第八天)模块的主要内容,如果未能解决你的问题,请参考以下文章

python学习日记第八天tkinter模块5

python学习日记第八天tkinter模块5

python 第八天

我的Python成长之路---第八天---Python基础(23)---2016年3月5日(晴)

我的Python成长之路---第八天---Python基础(25)---2016年3月5日(晴)

学习python--第八天(直接赋值浅拷贝和深度拷贝解析)