Pip源设置(使用清华源)

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xxx

1、临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

2、永久更改pip源

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果您到 pip 默认源的网络连接较差,临时使用镜像站来升级 pip:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
国内源:
新版ubuntu要求使用https源,要注意。

阿里云:http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:http://pypi.hustunique.com/

山东理工大学:http://pypi.sdutlinux.org/

豆瓣:http://pypi.douban.com/simple/

修改镜像源:(直接在命令行输入)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
在输入:conda config --set show_channel_urls yes 就修改完成了!
永久修改:

Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)。

内容如下:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini。内容同上。

三、永久配置 分别执行下列命令即可永久替换服务器为清华镜像源:

pip3 install pip -U python -m ensurepip python -m pip install --upgrade pip pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

"pip install pip -U" 是用于执行升级pip的命令;

安装 prophet

conda create -n py27 python=2.7
  conda activate py27
conda install -c "conda-forge/label/cf202003" fbprophet
conda list fbpr
conda install -c conda-forge xlrd
pip install openpyxl
conda list
     1.16.5           py27h0d21db5_0    conda-forge/label/cf202003
openpyxl                  2.6.4                    pypi_0    pypipip install numpy==1.15.4
pip install numpy==1.15.4
conda config --set channel_priority True
conda info
conda config --show channels

channels:
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - defaults
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/fastai/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
show_channel_urls: true
channel_priority: flexible

报错Upload did not complete.
Thank you for helping to improve conda.
Opt-in to always sending reports (and not see this message again)
by running

$ conda config --set report_errors true

conda config --set ssl_verify false

json的数据类型和python数据类型的区别

Python Json
dict object
list,tuple array
str,unicode string
int,long,float number
True true
False false
None null

json库的一些方法

方法 作用
json.dumps() 将python对象编码成Json字符串
json.loads() 将Json字符串解码成python对象
json.dump() 将python中的对象转化成json储存到文件中
json.load() 将文件中的json的格式转化成python对象提取出来

json.dump()和json.dumps()的区别

json.dumps()是把python对象转换成json对象的一个过程,生成的是字符串。 json.dump()是把python对象转换成json对象生成一个fp的文件流,和文件相关。

1.json.dumps()

在使用json方法的时候要记住先引进这个库,用import json

import json 
x = {'name':'你猜','age':19,'city':'四川'} 
#用dumps将python编码成json字符串
print(json.dumps(x))
  然后就可以得到: 
{"name": "\u4f60\u731c", "age": 19, "city": "\u56db\u5ddd"}

注意上面python字符串专门用的单引号,转化以后,json就用的是双引号了

2.json.dump()

这个方法结合了文件的操作,把转换后的json储存在了文件里。

import json 
x = {'name':'你猜','age':19,'city':'四川'} 
#将python编码成json放在那个文件里
filename = 'pi_x.txt'
with open (filename,'w') as f:
    json.dump(x,f)

dumps的一些参数(重点)

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

obj:就是你要转化成json的对象。 sort_keys =True:是告诉编码器按照字典排序(a到z)输出。如果是字典类型的python对象,就把关键字按照字典排序。 indent:参数根据数据格式缩进显示,读起来更加清晰。 separators:是分隔符的意思,参数意思分别为不同dict项之间的分隔符和dict项内key和value之间的分隔符,把:和,后面的空格都除去了。 skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key 。

x = [ {'name':'你猜','age':19,'city':'四川',('hobby',):'Game'} ]

try:
    print(json.dumps(x))
except (TypeError, ValueError) as err:
    print ('ERROR:', err)
    
print()
json.dumps(x,skipkeys=True)
123456789

注意在hobby那里我用的是元组,然后输出是:

ERROR: keys must be str, int, float, bool or None, not tuple

'[{"name": "\\u4f60\\u731c", "age": 19, "city": "\\u56db\\u5ddd"}]'

ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文。 check_circular:如果check_circular为false,则跳过对容器类型的循环引用检查,循环引用将导致溢出错误(或更糟的情况)。 allow_nan:如果allow_nan为假,则ValueError将序列化超出范围的浮点值(nan、inf、-inf),严格遵守JSON规范,而不是使用JavaScript等价值(nan、Infinity、-Infinity)。 default:default(obj)是一个函数,它应该返回一个可序列化的obj版本或引发类型错误。默认值只会引发类型错误。

dump的参数

dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw)

和json.dumps()就是多了一个fp的文件参数,就上面讲过这两个的区别,一个是关于文件之间的储存,一个是字符串之间的转换。

json.load()和json.loads()的区别

json.loads()是针对内存对象,将string转换为dict。 json.load()针对文件句柄,将json格式的字符转换为dict,从文件中读取 (将string转换为dict)

1.json.loads()

import json

x = {'name':'你猜','age':19,'city':'四川'}

#用dumps将python编码成json字符串
x = json.dumps(x)
print(x)

#用loads将json编码成python
print(json.loads(x))
12345678910

结果是:

{"name": "\u4f60\u731c", "age": 19, "city": "\u56db\u5ddd"}
{'name': '你猜', 'age': 19, 'city': '四川'}
12

2.json.load()

import json

x = {'name':'你猜','age':19,'city':'四川'}

filename = 'pi_x.txt'
with open (filename,'w') as f:
    json.dump(x,f)
with open (filename) as f_1:
    print(json.load(f_1))
123456789

显示的结果是:

{'name': '你猜', 'age': 19, 'city': '四川'}

这就把我们储存在txt文件里面的json格式的内容读取出来了。

  1. //把json字符串转化为对象

  2. var data=JSON.parse(responseBody);

  3. //获取data对象的utoken值。

  4. var token=data.utoken;

基础

如果当前 Linux 发行版没有安装 Python 3,或者你觉得现有的 Python 3 版本不够新,那么就需要更新 Python 版本。输入命令即可: sudo apt-get install python3.8 #coding:utf-8

print("Please write your phone number : ") n=input() print(" your phone number is: "+n) n=input() m=input() print("计算两个数") a=2 b=2 sum=int(n)+int(m) a=2 b=2 print("%d+%d=%d"%(a,b,a+b)) print(n+m)

字典 zidian={"键1":"值1","键2":"值2"} jian3=input() zhi3=input() zidian[jian3]=zhi3 print(zidian)

#判断值是否在集合 list=["值1","值2","3"] print("3 是否在 list 的中",'3' in list) print("3 是否在 list 的中",'3'not in list)

a1=2 a2=2 print("判断 a1 is a2",a1 is a2) print("判断 a1 is a2",a1 is not a2)

a=2 b=2 print("%d+%d=%d"%(a,b,a+b)) %占位符 运算符用%接()

0b表示二进制

多重if选择结构 if条件表达式1: 语句块1 elif条件表示2: 语句块2 elif条件表示3: 语句块3else: 语句块4

If选择结构

price=int(input("请输入价格")) if price>=100: price*=0.9 print(price) else: print(price)

多重if选择结构

​ price=int(input("请输入价格")) if price>=0 and price<=200: ​ price = price * 0.9 ​ print(price) elif price>200 and price<=300: ​ price = price * 0.1 ​ print(price) else: ​ print(price) ​ # while循环语句

for循环

in 序列 有返回true list1=[1,'2','4','5'] list2=['1','2','4','5'] a=1 b=3 c=1 if a in list1: print("%d 在列表中"% a) else: print("%d 不在列表中" % a) if b in list1: print("%d 在列表%d中" % b) else: print("%d 不在列表中" % b) if c in list2: print("%d 在列表中" % c) else: print("%d 不在列表list2中" % c) for循环输出字典 数组 元组(固定的) list2=['1','2','4','5'] for l in list2: print(l,end=" ") 打印字典 for l in zidian: print("%s 对应的值 %s" %(l,zidian[l]))

sn=0

for a in range(1,11): print(a) sn=sn+a else:

(当a不在1-11的时候在执行下面)

​ print("%d 1-10之和"% sn) ​ ​ 自定义函数

函数 def 开头 define 下定义

def calmax(a,b):

  if a>b:
print(a)
        return a
    # else:							
        # print(b)
    return b		

​ ​ if a>b: ​ # print(a) ​ return a ​ else: ​ # print(b) ​ return b (不同的缩进不同的含义) num1=1 num2=4 result=calmax(num1,num2) print(result)

按值传递不修改原内容 元组字符串数字 .. 字符串函数 string1="hello world!" print("前五个字符串",string1[:5]) print("前3-6个字符串",string1[3:6]) te=len(string1) print(te) print("后五个字符串",string1[len(string1)-5:]) print("后1个字符串 ",string1[len(string1)-1:])

截取字符串打印

html=''''

2022/1/12 21:16
来源 win10
''' lindex=html.find('class="about">') print(lindex) length=len('class="about">') print(length) brindex=html.find("
") print(brindex) timestr=html[lindex+length:brindex] timestr2=html[6+14:37]

timestr =timestr.strip()

print(timestr) print(timestr2)

可变集合 & 不可变集合

list=[3,4,3,5] print(list) myset=set(list) fset=frozenset(list) print("可变集合",myset) print("不可变集合",fset)

s1=set([3,5,8]) s1.add(9) for i in s1: print(i,"\t") s2=set([5,11,13]) print("s1,s2不同的数字是%s"%s1.difference(s2)) print( s1|s2)

常用函数

%a.bf,a表示浮点数的打印长度,b表示浮点数小数点后面的精度 ,%f时表示原值,默认是小数点后5位数 。
print "PI=%f" % math.pi output: PI=3.141593

pi=3.141592653 print(pi) print('%10.3f'%pi) print('%010.3f'%pi)

0表示用0填补空白

print('%-10.3f'%pi)

-表明当前向左对齐

print('%+f'%pi)

+f表明显示正负号

print("pi=%.*f"%(3,pi)) print("pi=%.*f"%(4,pi))

type函数 a=type(pi) if a==float: print("pi是%s类型"%a) else: print("no")

pi是<class 'float'>类型 len函数 sring2='hello world!' list=[1,2,3,4] print("pi长度",len(sring2)) print("pi长度",sring2.len()) print("pi长度",len(list)) print("pi长度",list.len())

类的创建和使用

class animal: Name="" Hobby="" Price=0 def init(self,name,hobby,price): self.Name=name self.Hobby=hobby self.Price=price def dispalyanimal(self): print("姓名%s,爱好%s,价格%d"%(self.Name,self.Hobby,self.Price))

调用

animal1=animal("Cat","eat finish",9999) print(animal1.Name) print(animal1.Hobby) print(animal1.Price) animal1.dispalyanimal() 模块导入 引用 from calUtils import calMax from calUtils import calMax as cal import utils.numUtils

import os

def statisticFile(dir,dict): dir=dir+"\" dirList=os.listdir(dir)

os.Listdir快驭当前目录下所有的文件和文件夹

print(dirList) for diritem in dirList: path=dir+diritem if os.path.isdir(path): dict["dir"]+=1 statisticFile(path,dict) else: dict["file"]+=1

dict={"dir":0,"file":0} pythondir="E:\BaiduNetdiskDownload" statisticFile(pythondir,dict) print("目录数量 %d 文件夹数量%d"%( dict["dir"], dict["file"]))

import os curpath=os.getcwd() print("获取当前目录",curpath) fileObject=open("E:\pycharm\demo1.2.py","r+") print("文件名",fileObject.name) print("是否关闭",fileObject.closed) print("访问模式",fileObject.mode)

fileObject=open("E:\BaiduNetdiskDownload\test1.txt") string2=fileObject.read() print("读取string2",string2) fileObject.close() fileObject=open("E:\BaiduNetdiskDownload\test1.txt","w+") string2=fileObject.write("this is word 这个是世界") fileObject.close()

json import json list1=[1,2,3,4,5] obj1=json.dumps(list1)

python转json

print("转换后类型为%s 值为%s"%(type(obj1),obj1))

dict={"name:":"json","age":10} obj2=json.dumps(dict) print("转换后类型为%s 值为%s"%(type(obj2),obj2))

json键值由双引号引起来。

jsondate='{"name":"json","age":10,"address":"USA"}'

json转python

obj3=json.loads(jsondate) print(obj3) for item in obj3: print("%s = %s "%(item,obj3[item]),end=" ") jsondate2=''' [ {"name":"json","age":10,"address":"USA"}, {"name":"html","age":15,"address":"USA"} ] ''' obj3=json.loads(jsondate) print("类型为%s,值为%s "%(type(obj3),obj3)) 慕课第五章第二 、三 节 xml sax dom elementtree scv xls import xlrd 只能是xls def read_excel(): workbook=xlrd.open_workbook( "users.xls") print(workbook.sheet_names()) 获取 工作表 sheet=workbook.sheet_by_index(0)

sheet=workbook.sheet_names()[0]

sheet=workbook.sheet_by_name ( "Sheet1")

异常 print("-----程序执行起始位置-------") num=input("请输入一个数字:") if num!="5": raise Exception(u"Invalid number" , num) print("-----程序执行结束位置-------")

数据库链接 import pymysql conn=pymysql.connect(host="127.0.0.1" , port=3306,user="root" , passwd="123456, db="mydb" , charset="utf8") print(conn)

with语句 class echo: def enter(self): print("with语句被触发") def exit(self, *args): print("with语句执行完成") with echo() as e: print("with要执行的内容") flask

Requests库

Requests库中提供了如下常用的类: ①requests.Request:表示请求对象,用于将一个请求发送到服务器; ②requests.Response:表示响应对象,如果服务器能正常响应,会得到一 个Response,Response的内容就是所要获取的页面内容 ,类型可能有HTML、 Json字符串、二进制数据(如图片、视频)等类型; ③request.Session: 表示请求回话,提供Cookie持久性、 连接池和配置。 requests库中有7个主要的函数,分别是request()、get() 、head() 、 ost()、put()、patch()、delete()。这7个函数中request()函数是其余6个函 的基础函数,其余6个函数的实现都是通过调用该函数实现的。这些函数都提 共了发送HTTP请求。各函数具体说明见表: 方法 说明 requests.request() 构造一个请求,支撑一下方法的基础方法 requests.get() 获取HTML网页的主要方法, 对应于HTTP的GET (请求URL位 置的资源) requests.head() 获取HTML网页的主要方法,对应于HTTP的GET (请求URL位置的资源) requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST (请 求向URL位置的资源附加新的数据) requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT (请求 向URL位置储存一个资源,覆盖原来URL位置的资源) requests.patch() 向HTML网页提交局部修改的请求,对应于HTTP的PATCH (请 求局部更新URL位置的资源) requests.delete() 向HTML网页提交删除请求,对应于HTTP的DELETE (请求删 除URL位置储存的资源) requests.get() 参数 说明 url 网站的URL params 将字典或字节序列作为参数添加到URL中,get形式的参数 data 将字典或字节序列作为参数添加到urI中 ,post形 式的参数 headers 请求头,可以修改User-Agent等参数 timeout 超时时间 proxies 设置代理 Response类可以动态地响应客户端的请求,控制发送给用户的信息,并且 动态地生成响应,包括状态码、网页的内容等。Response类的常用属性见表: 属性 说明 stauts code HTTP请求返回的状态,200表示连接成功,404表示失败 text HTTP响应内容的字符串形式,即URL对应的页面内容 encoding 从HTTP请求头中猜测的响应内容编码方法 apparent_encoding 从内容中分析出的响应编码方式(备选编码方式) content HTTP响应内容的二进制形式 Respones类会自动解码来自服务器的内容,并且大多数的Unicode字符集 都可以被无缝地解码。 网页解析器 类似正则 其中,针对文本的解析,有正则表达式;针对HTML/XML的解析,有XPath、 Beautiful Soup、 正则表达式;针对JSON的解析,有JSONPath。 Python为不同的页面解析技术提供了不同的模块或者库来支持。其中re模 块支持正则表达式语法的使用,lxm|库 支持XPath语法的使用,JSON模块支持 JSONPath语法的使用。 使用Python语言开发的爬虫框架有很多,常见的Python框架主要有Scrapy、 Crawley、 PySpide等。 爬虫框架的实现方式和原理都是大同小异,读者只需深入掌握--种 框架即可。

  1. Python常用爬虫框架介绍 (1) Scrapy使用纯Python实现的开源爬虫框架,是为了高效地爬取网站数据,提取 结构性数据而编写的应用框架。可以应用在包括数据挖掘、信息处理或存储历史数据等一 系列的程序中。其功能强大,支持自定义Item和pipleline数据管道、支持在Spider中指定 网页域范围(domain) 以及相应的爬取规则(Rule) 、支持XPath对DOM的解析等。 是 目前最常用的通用爬虫框架。其官方网址为https://scrapy.org/. (2) Crawley也是使用Python开发的一款爬虫框架,该框架致力于改变人 们从互联网提取数据的方式。Crawley是基 于Eventlet的高速WebCrawler,可 以高速爬取对应网站的内容,支持如Postgre、MySQL、 Orache等 关系数据引 擎,支持像MongoDB和Couchdb这样的NoSQL数据库,可以将数据导出为 JSON、 XML、CSV格式,并且易于学习。Crawler项目网站为 http://project.crawley-cloud.com/. (3) PySpider提供WebUl界面,调试爬虫很方便,能在浏览器界面.上进行 脚本编写,可以很方便地进行爬取的流程、监控和爬虫项目管理,支持使用 PhantomJS,可以抓取JavaScript页面,后端使用常用的数据库进行爬取结果的 存储,还能定时设置任务与任务优先级等。PySpider项目网站为 http://docs.pyspider.org/en/latest/.
常见状态代码、状态描述的说明如下。 
200 OK:客户端请求成功。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。

requests实战(大数据管理与应用

追加excel

        try:
            workbook = openpyxl.load_workbook('total.xlsx')
            worksheet = workbook['Sheet1']
            new_list = [list(d.values()) for d in areaget]
            for itm in new_list:
                worksheet.append(itm)
            workbook.save('total.xlsx')
            print("数据追加写入成功!")
        except FileNotFoundError:
            yeardfs = pd.concat(dfs)
            yeardfs.to_excel("total.xlsx", index=False)
            print("文件不存在,已保存新数据到Excel文件!")
       # dfs = [] # 取消这行注释 c 追加读取

lxml xpath

beautiful soup解析

HTTP消息中header头部信息

导读:HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成

1、HTTP请求方式

如下表:

GET 向Web服务器请求一个文件
POST 向Web服务器发送数据让Web服务器进行处理
PUT 向Web服务器发送数据并存储在Web服务器内部
HEAD 检查一个对象是否存在
DELETE 从Web服务器上删除一个文件
CONNECT 对通道提供支持
TRACE 跟踪到服务器的路径
OPTIONS 查询Web服务器的性能

实例:

POST /test/tupian/cm HTTP/1.1

分成三部分:

(1)POST:HTTP请求方式

(2)/test/tupian/cm:请求Web服务器的目录地址(或者指令)

(3)HTTP/1.1: URI(Uniform Resource Identifier,统一资源标识符)及其版本

备注:

在Ajax中,对应method属性设置。

2、Host

说明:

请求的web服务器域名地址

3、User-Agent

说明:

HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断到当前HTTP请求的客户端浏览器类别。

实例:

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11

4、Accept

说明:

指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序。

例如:

Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/;q=0.5

备注:

在Prototyp(1.5)的Ajax代码封装中,将Accept默认设置为“text/javascript, text/html, application/xml, text/xml, /”。这是因为Ajax默认获取服务器返回的Json数据模式。

在Ajax代码中,可以使用XMLHttpRequest 对象中setRequestHeader函数方法来动态设置这些Header信息。

5、Accept-Language

说明:

指定HTTP客户端浏览器用来展示返回信息所优先选择的语言。

实例:

Accept-Language: zh-cn,zh;q=0.5

6、Accept-Encoding

说明:

指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。而这里设置的就是客户端浏览器所能够支持的返回压缩格式。

实例:

Accept-Encoding: gzip,deflate

7、Accept-Charset

说明:

浏览器可以接受的字符编码集。

实例:

Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

8、Content-Type

说明:

显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性。

实例:

Content-type: application/x-www-form-urlencoded;charset:UTF-8

有关Content-Type属性值可以如下两种编码类型:

(1)“application/x-www-form-urlencoded”: 表单数据向服务器提交时所采用的编码类型,默认的缺省值就是“application/x-www-form-urlencoded”。 然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。

(2)“multipart/form-data”: 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。

当提交为单单数据时,可以使用“application/x-www-form-urlencoded”;当提交的是文件时,就需要使用“multipart/form-data”编码类型。

9、Connection

说明:

表示是否需要持久连接。如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点, web服务器需要在返回给客户端HTTP头信息中发送一个Content-Length(返回信息正文的长度)头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然 后在正式写出内容之前计算它的大小。

实例:

Connection: keep-alive

10、Keep-Alive

说明:

显示此HTTP连接的Keep-Alive时间。使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。

以前HTTP请求是一站式连接,从HTTP/1.1协议之后,就有了长连接,即在规定的Keep-Alive时间内,连接是不会断开的。

实例:

Keep-Alive: 300

11、cookie

说明:

HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。

12、Referer

说明:

包含一个URL,用户从该URL代表的页面出发访问当前请求的页面

*xhr.setResponseHeader("Content-Type","application/x-www-form-urlencoded");//设置请求报文头

.pip install requests命令,安装requests依赖库

pip install lxml, 安装lxml依赖库

openstack二次开发:Python API

安装 Python 绑定

Python 绑定与每个服务的命令行工具捆绑在一起。事实上,每个命令行工具使用相应的 Python API 实现。可从 Python Package Index(PyPi — 参见参考资料,获取相关链接)中使用 pip(一个 Python 包安装程序)来安装每个工具。pip 包名称包括:

python-keystoneclient

python-glanceclient

python-novaclient

python-quantumclient

python-cinderclient

python-swiftclient

安装 keystone 客户端, pip install python-keystoneclient

使用 keystone 客户端的 2.0 版将 Image Service 添加到服务目录的示例。 清单 1. 使用 keystone 创建一个管理员角色 import keystoneclient.v2_0.client as ksclient

Replace the method arguments with the ones from your local config

keystone = ksclient.Client(auth_url="http://192.168.27.100:35357/v2.0", username="admin", password="devstack", tenant_name="demo") glance_service = keystone.services.create(name="glance", service_type="image", description="OpenStack Image Service") 复制代码

清单 2. 使用身份验证令牌执行身份验证

import keystoneclient.v2_0.client as ksclient

Replace the values below with the ones from your local config

endpoint = "http://192.168.27.100:35357/v2.0" admin_token = "devstack"
keystone = ksclient.Client(endpoint=endpoint, token=admin_token)

python获取set-cookies

本文章向大家介绍python获取set-cookies,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#!/usr/bin/python3.4
# -*- coding: utf-8 -*-
import requests
url = "https://www.baidu.com/"
session = requests.session()
session.get(url)
html_set_cookie = requests.utils.dict_from_cookiejar(session.cookies)
print(html_set_cookie)

列表解析

列表解析 双重for循环+条件判断

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因
此6是完数。编程,找出10000之内的所有完数,将其存入一个列表里
list1=[]

# n=6 求因子
# for i in range(1, n):
#     if n % i == 0:
#         print(i)
for i in range(2,10001):
    sum = 0
    for j in range(1,i):
        if i%j==0:
            # print(i)
            sum+=j
    if (sum==i):
        list1.append(i)
print(list1)

尝试以列表解析的方式生成结果列表

判断写成一个函数在列表调用

def wdyinzi(i):
    sum=0
    for j in range(1, i):
        if i % j == 0:
            # print(i)
            sum += j
    if(sum==i):
        return  i
list2=[i for i in range(2,10001) if wdyinzi(i)]
print(list2)

numpy

venv虚拟环境【Python】搭建虚拟环境

	在命令行中输入以下命令来创建一个名为 "myenv" 的虚拟环境(你也可以将 "myenv" 替换为你喜欢的名称):

python -m venv myenv
执行此命令后,将在当前目录下创建一个名为 "myenv" 的文件夹,其中包含虚拟环境的文件和目录。

激活虚拟环境。在 Windows 上,可以使用以下命令:

myenv\Scripts\activate
在 macOS 和 Linux 上,可以使用以下命令:

source myenv/bin/activate
激活虚拟环境后,你会注意到命令行提示符发生变化,显示出当前激活的虚拟环境名称。

现在,你可以在该虚拟环境中使用 pip 安装依赖项,这些依赖项将被隔离在这个虚拟环境中,不会影响全局 Python 环境。

当你完成项目工作后,可以使用以下命令来退出虚拟环境:

deactivate

lib scripte Python.exe

前言

虚拟环境简介

虚拟环境依赖模块的安装

1、安装好Python环境

2、安装第三方库(虚拟环境库)

3、 安装第三方模块virtualenvwrapper-win

为虚拟环境配置环境变量

1、配置环境变量

2、点击环境变量

3、在系统变量中,点击新建

4、新建系统变量编辑

虚拟环境相关操作

1、新建虚拟环境

2、查看虚拟环境配置情况

3、退出虚拟环境

4、删除虚拟环境

补充:virtualenv创建虚拟环境

1、安装好Python

2、安装第三方模块virtualenv

3、创建虚拟环境

4、激活虚拟环境

5、退出虚拟环境

6、删除虚拟环境

前言 如果希望方便自定义虚拟环境的安装路径,且以后方便使用管理,按照文章顺序阅读、进行操作即可;这个步骤较为复杂。 如果不介意虚拟环境安装在C盘下,为了快速上手使用,可以考虑直接跳到补充内容下,和前文是互相独立了,而且步骤简单。 虚拟环境简介 虚拟环境英文名是virtual environment,它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。

例如:我的电脑已经安装了Python3,我想使用Python2,就可以在虚拟环境中安装Python2,与电脑中的Python3不冲突。

虚拟环境依赖模块的安装 1、安装好Python环境 2、安装第三方库(虚拟环境库) Python的第三方库virtualenv能够帮助我们创建虚拟环境,安装命令如下:

pip install virtualenv PS:使用virtualenv中的命令来创建虚拟环境的话,会默认同时在C盘用户目录中也创建一个环境,会占用C盘内存(我的用户名是buting):

因此,我们优先选择下面这一种创建虚拟环境的方式。

3、 安装第三方模块virtualenvwrapper-win virtualenvwrapper-win是一个基于virtualenv开发的工具包。

安装命令如下(需要先安装virtualenv):

pip install virtualenvwrapper-win 为虚拟环境配置环境变量 1、配置环境变量 先打开高级系统设置(如果不知道在哪里的话,可以在搜索框里面搜索;还有设置里面,也会有查找设置的搜索框)

2、点击环境变量

3、在系统变量中,点击新建

4、新建系统变量 变量名设置为:WORKON_HOME,注意变量名一定要大写;

变量值为你想新建环境变量的目录路径,建议在D盘或者E盘新建一个用来作为虚拟环境的目录,这样空间比较充裕。

虚拟环境相关操作 1、新建虚拟环境 我在配置环境变量时写的变量值是:D:\env,所以我新建虚拟环境就会默认存储到D:\env;

新建虚拟环境的命令如下:

mkvirtualenv 例如:我想创建一个名为my_env的虚拟环境,我在cmd输入mkvirtualenv my_env即可(在cmd任意目录下输入都可以):

创建好虚拟环境my_env后,会自动跳转到my_env目录下,路径前面有(my_env):

而且系统会默认为新建的虚拟环境配置电脑中安装好的Python环境(只包括部分执行命令,没有相关第三方模块),当然我们也可以在新虚拟环境my_env中重新安装Python。

2、查看虚拟环境配置情况 在cmd中运行 workon或者lsvirtualenv即可查看当前的虚拟环境配置情况:

3、退出虚拟环境 deactivate

4、删除虚拟环境 rmvirtualenv

已经成功删除虚拟环境my_env。

上面有提到,直接使用模块virtualenv创建虚拟环境,会在C盘用户目录下生成副本,比较占空间,这里也简单介绍一下使用virtualenv创建虚拟环境的方法,感兴趣的同学可以实践一下。

这一部分和上面内容独立

补充:virtualenv创建虚拟环境 1、安装好Python 2、安装第三方模块virtualenv pip install virtualenv 3、创建虚拟环境 在cmd中切换到需要创建虚拟环境的目录下执行命令:

virtualenv 虚拟环境名称 已经成功创建虚拟环境my_env,现在D盘下可以找到一个名为my_env的文件;

同时,C盘也会创建如图所示路径下也会创建相关目录,存储有虚拟环境相关的数据。

4、激活虚拟环境 activate 我们需要到创建的虚拟环境的Scripts目录下执行如上命令

5、退出虚拟环境 deactivate

6、删除虚拟环境 直接删除虚拟环境所在目录即可。

或者用命令删除也行:

rd/s/q 目录路径

pip install -r requirements.txt安装问题

一、requirements.txt介绍: 1、python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号。以便新环境部署。

requirements.txt可以通过pip命令自动生成和安装。

2、Pycharm的Terminal端生成requirements.txt文件pip freeze > requirements.txt

3、PycharmTerminal安装requirements.txt依赖包:pip install -r requirements.txt

二、安装问题: 1、在github下载项目,安装依赖项的时候发现,有的依赖项在镜像源中找不到规定版本导致安装终止。

解决办法:将requirements.txt中没有对应版本的依赖项删掉(已经安装完的不能删掉),然后继续使用pip install -r requirements.txt,最后再单独安装没有安装上的依赖项(pip install的后面不加版本号):pip install 依赖项

2、安装速度太慢:因为下载镜像源默认为国外https://pypi.org/simple,速度较慢

解决办法:修改镜像源为国内,eg:清华/阿里云/豆瓣,以清华镜像为例

(1)临时修改:加参数-i和镜像地址 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

(2)永久修改:

(a)linux:修改 ~/.pip/pip.conf (没有就创建一个), 修改 index-url至tuna,内容如下:

[global]
 index-url = https://pypi.tuna.tsinghua.edu.cn/simple
12

(b)windows:直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,文件内容如下:

[global]
 index-url = https://pypi.tuna.tsinghua.edu.cn/simple
12

3、找到在requirements.txt目录下,按住shift键再右击鼠标,选择打开powershell窗口(终端),然后在给终端命令:pip install -r requirements.txt即可下载。 下载的时候,报错:No such file or directory: ‘requirements.txt’

报错信息显示找不到对应的文件,有可能是文件名没写对(没错,真有可能是这个原因)

_EOF_
Python
关于博主: 欢迎扫码加好友,交流技术 & 分享经验!
「博主」 专注于互联网热门新技术探索与开发实践,包括架构设计、机器学习与数据分析算法、移动端开发、Linux~ 我都不会,欢迎一起探讨技术,分享学习实践经验。
 讨论区
共 {{comments.length}} 条讨论
良言一句三冬暖,恶语伤人六月寒。
  
回复 @{{replyComment.anonymousUser.name}}
  刷新
  重置   发表
{{comment.anonymousUser.name}}
  • 首次发言:{{comment.anonymousUser.createdTime}}
  • 网站地址:{{comment.anonymousUser.url}}
{{comment.anonymousUser.name}}
{{comment.createdTime}}
@{{comment.replyUser}} {{comment.content}}