python模块_Python常用模块

andom模块

datetime模块
time模块
os模块
sys模块
hashilib模块
序列化-json模块
序列化-pickle模块
正则表达式
re模块

paramiko

logging模块
模块和包

模块其实就是我们把一些公用的功能代码写入在一个py文件中. 在其他模块中可以随意的使用该文件中的代码. 那么导入一个模块的语法

1. import 模块

2. from 模块 import 功能

本节我们主要是学习和了解一些python的内置模块的使用

1. random

python中专门用来产生随机数的一个模块

import 

2. datetime

在后期我们处理时间的时候会经常使用datetime来处理.

from datetime import datetime

# # 当前系统时间
# d = datetime.now()
# print(d)
#
# # 格林尼治时间, 和我们相差8小时
# d1 = datetime.utcnow()
# print(d1)
#
# # 用指定的时间创建datetime
# d2 = datetime(2015, 6, 5, 12, 11, 8, 3553)
# print(d2)


# 时间格式化
# d = datetime.now()
# s = d.strftime("%Y-%m-%d %H:%M:%S")
# print(s)

# 字符串转化成时间
str_date = input("请输入一个时间(格式 yyyy-mm-dd HH:MM:SS):")
d = datetime.strptime(str_date, "%Y-%m-%d %H:%M:%S")
print(d)
print(type(d))

# 计算时间差
d1 = datetime(2019, 1, 2, 11, 0, 0)
d2 = datetime(2019, 1, 1, 12, 3, 0)
diff = d2 - d1
print(diff.seconds)  # 单纯从时分秒来计算
print(diff.total_seconds())  # 包括年月日计算

3. time模块

我们一般会使用time模块让程序休息n秒. 或者计算简单的时间差

import time

print(1)
time.sleep(3)  # 让程序睡3秒
print(2)


# 简单的计算时间差
a = time.time()  # 当前系统时间, 从1970年1月1日0点0分0秒开始到现在经过了多少秒
time.sleep(2)
b = time.time()  # 当前系统时间, 从1970年1月1日0点0分0秒开始到现在经过了多少秒

print(b - a)

日期格式化的标准:

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

4. os模块

os模块主要封装了关于操作系统文件系统的相关操作. 比如. 创建文件夹, 删除文件夹等

所有和操作系统相关的内容都在os模块
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录

os.system("bash command")  运行shell命令,直接显示
os.popen("bash command").read()  运行shell命令,获取执行结果
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd

# os.path
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小

# 特殊属性:
os.sep    输出操作系统特定的路径分隔符,win下为"",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"rn",Linux下为"n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

用os.walk遍历文件夹

import os

for root, dirs, fils in os.walk("."):
    for dir in dirs:
        print(os.path.join(root, dir))
    for f in fils:
        print(os.path.join(root, f))

用递归遍历文件夹

def func(path):
    lst = os.listdir(path)
    for f_name in lst:
        new_path = os.path.join(path, f_name)
        if os.path.isdir(new_path):
            func(new_path)
        else:
            print(new_path)

func("./")

5. sys模块

所有和python解释器相关的都在sys模块.

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version        获取Python解释程序的版本信息
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称

6. hashlib模块

MD5是一种不可逆的加密算法. 它是可靠的. 并且安全的. 在python中我们不需要手写这一套算法. 只需要引入一个叫hashlib的模块就能搞定MD5的加密工作

import hashlib
obj = hashlib.md5()
obj.update("jolin".encode("utf-8"))  # 加密的必须是字节
miwen = obj.hexdigest()
print(miwen)    # 13308dd423cebfea676b4f4aa5dc9d77

那这样的密文安全么? 其实是不安全的. 当我们用这样的密文去找一个所谓的MD5解密工具. 是有可能解密成功的.

python模块_Python常用模块_第1张图片

这就尴尬了. MD5不是不可逆么? 注意. 这里有一个叫撞库的问题. 就是. 由于MD5的原始算法已经存在很久了. 那就有一些人用一些简单的排列组合来计算MD5. 然后当出现相同的MD5密文的时候就很容易反推出原来的数据是什么. 所以并不是MD5可逆, 而是有些别有用心的人把MD5的常见数据已经算完并保留起来了.

那如何应对呢? 加盐就行了. 在使用MD5的时候. 给函数的参数传递一个byte即可.

import hashlib

obj = hashlib.md5(b"fjlksajflkjasfsalwer123dfskjf")    # 加盐
obj.update("jolin".encode("utf-8"))  # 加密的必须是字节
miwen = obj.hexdigest()
print(miwen)    # 8a6564795f20e0e446049b0fba6222de

此时你再去任何网站去试. 累死他也解不开密.

那MD5如何应用呢?

import hashlib

def my_md5(s):
    obj = hashlib.md5(b"fjlksajflkjasfsalwer123dfskjf")
    obj.update(s.encode("utf-8"))  # 加密的必须是字节
    miwen = obj.hexdigest()
    return miwen

# alex: 8a6564795f20e0e446049b0fba6222de
username = input("请输入用户名:")
password = input("请输入密码:")
# 数据存储的时候.
# username: my_md5(password)
# 假设现在的用户名和密码分别是
# admin: 8a6564795f20e0e446049b0fba6222de  ==> admin:jolin

# 用户登录
if username == "admin" and my_md5(password) == "8a6564795f20e0e446049b0fba6222de":
    print("成功")
else:
    print("失败")

所以. 以后存密码就不要存明文了. 要存密文. 安全, 并且. 这里加的盐不能改来改去的. 否则, 整套密码就都乱了.

7. pickle模块

pickle用起来很简单. 说白了. 就是把我们的python对象写入到文件中的一种解决方案. 但是写入到文件的是bytes. 所以这东西不是给人看的. 是给机器看的.

把python对象转化成字节的过程被称为序列化

import pickle

lst = ["周润发", "李嘉诚"]

# 把一个对象(数据)转化成字节
bs = pickle.dumps(lst)  
print(bs)
# 把一个数据转化成字节, 写入到文件
pickle.dump(lst, open("lst.dat", mode="wb"))  

我们还可以从文件中读取二进制字节, 转化回我们原来的数据, 该过程被称为反序列化

# 把一个文件中的二进制字节转化回我们的数据
lst = pickle.load(open("lst.dat", mode="rb"))  
print(lst)

bs = b'x80x03]qx00(Xtx00x00x00xe5x91xa8xe6xb6xa6xe5x8fx91qx01Xtx00x00x00xe6x9dx8exe5x98x89xe8xafx9aqx02e.'
lst = pickle.loads(bs)  # 把一个文件中的二进制字节转化回我们的数据
print(lst)

8. json模块

终于到json了. json是我们前后端交互的枢纽. 相当于编程界的普通话. 大家沟通都用json. 为什么这样呢? 因为json的语法格式可以完美的表示出一个对象. 那什么是json: json全称javascript object notation. 翻译过来叫js对象简谱. 很复杂是吧? 来上一段我们认识的代码:

wf = {
    "name":"汪峰",
    "age":18,
    "hobby":"上头条",
    "wife":{
        "name":'子怡',
        "age":19,
        "hobby":["唱歌", "跳舞", "演戏"]
    }
}

这个不是字典么? 对的. 在python里这玩意叫字典. 但是在javascript里这东西叫json. 一模一样的. 我们发现用这样的数据结构可以完美的表示出任何对象. 并且可以完整的把对象表示出来. 只要代码格式比较好. 那可读性也是很强的. 所以大家公认用这样一种数据结构作为数据交互的格式. 那在这个鬼东西之前是什么呢? XML.....来看一段代码



    汪峰
    18
    上头条
    
        子怡
        18
        
            唱歌
            跳舞
            演戏
        
    

古人(老程序员)都是用这样的数据进行传输的. 先不管这个东西好不好看. 这玩意想要解析.. 那简直了. 想死的心都有. 所以老版本的xml在维护和处理上是非常复杂和繁琐的. 多说一嘴, 就是因为这个鬼东西太难解析. 以前的项目几乎没有用ajax的.

OK. 那json既然这么牛B好用. 怎么用呢? 注意. 这里又出来一个新问题. 我们的程序是在python里写的. 但是前端是在JS那边来解析json的. 所以. 我们需要把我们程序产生的字典转化成json格式的json串(字符串). 然后网络传输. 那边接收到了之后. 它爱怎么处理是它的事情. 那, 如何把字典转化成我们的json格式的字符串呢?很简单, 上代码.

import json
dic = {"a": "女王", "b": "萝莉", "c": "小清新"}
s = json.dumps(dic) # 把字典转化成json字符串
print(s)  # {"a": "u5973u738b", "b": "u841du8389", "c": "u5c0fu6e05u65b0"}

结果很不友好啊. 那如何处理中文呢? 在dumps的时候给出另一个参数ensure_ascii=False就可以了

import json
dic = {"a": "女王", "b": "萝莉", "c": "小清新"}
s = json.dumps(dic, ensure_ascii=False) # 把字典转化成json字符串
print(s)  # {"a": "女王", "b": "萝莉", "c": "小清新"}

搞定了. 接下来. 前端给你传递信息了. 你要把前端传递过来的json字符串转化成字典.

import json

s = '{"a": "女王", "b": "萝莉", "c": "小清新"}'
dic = json.loads(s)
print(type(dic), dic)

json也可以像pickle一样把序列化的结果写入到文件中.

dic = {"a": "女王", "b": "萝莉", "c": "小清新"}
f = open("test.json", mode="w", encoding="utf-8")
json.dump(dic, f, ensure_ascii=False) # 把对象打散成json写入到文件中
f.close()

同样也可以从文件中读取一个json

f = open("test.json", mode="r", encoding="utf-8")
dic = json.load(f)
f.close()
print(dic)

9. 正则表达式

首先, 我们在网页上进行注册或者登陆的时候经常能看到一些格式上的错误提示. 比如: 你在注册百度账号的时候https://passport.baidu.com/v2/?reg®Type=1&tpl=wk 输入用户名随意的输入系统会提示你. 你的账号过长或者不允许使用中文等等操作. 那这种操作如果使用我们现有的知识点是可以完成的. 但是完成的效果并不好. 写起来也不容易. 尤其是对邮箱的匹配. 电话号码的匹配. 那正则表达式就是专门来处理类似问题的一种表达式. 英文全称:Regular Expression. 简称 regex或者re. 但你要知道我们在使用python的re模块之前. 我们首先要对正则有一定的了解和认识. 就像我们使用time模块之前. 我们已经对时间有了一定的认识.

正则表达式是对字符串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤. 使用正则的优缺点:

优点: 灵活, 功能性强, 逻辑性强.

缺点: 上手难. 一旦上手, 会爱上这个东西

工具: 各大文本编辑器一般都有正则匹配功能. 我们也可以去http://tool.chinaz.com/regex/进行在线测试.

正则表达式由普通字符和元字符组成. 普通字符包含大小写字母, 数字. 在匹配普通字符的时候我们直接写就可以了. 比如"abc" 匹配的就是"abc". 我们如果用python也可以实现相同的效果. 所以普通字符没什么好说的. 重点在元字符上.

元字符: 元字符才是正则表达式的灵魂. 元字符中的内容太多了, 在这里我们只介绍一些常用的.

1. 字符组

字符组很简单用[]括起来. 在[]中出现的内容会被匹配. 例如:[abc] 匹配a或b或c

如果字符组中的内容过多还可以使用- , 例如: [a-z] 匹配a到z之间的所有字母 [0-9]匹配所有阿拉伯数字

思考: [a-zA-Z0-9]匹配的是什么?

2. 简单元字符

基本的元字符. 这个东西网上一搜一大堆. 但是常用的就那么几个:

.     匹配除换行符以外的任意字符
w    匹配字母或数字或下划线
s    匹配任意的空白符
d    匹配数字
n    匹配一个换行符
t    匹配一个制表符
b    匹配一个单词的结尾
^     匹配字符串的开始
$     匹配字符串的结尾
W    匹配非字母或数字或下划线
D    匹配非数字
S    匹配非空白符
a|b   匹配字符a或字符b
()    匹配括号内的表达式,也表示一个组
[...]    匹配字符组中的字符
[^...]    匹配除了字符组中字符的所有字符

3. 量词

我们到目前匹配的所有内容都是单一文字符号. 那如何一次性匹配很多个字符呢, 我们要用到量词

*    重复零次或更多次
+    重复一次或更多次
?    重复零次或一次
{n}    重复n次
{n,}    重复n次或更多次
{n,m}    重复n到m次

4. 惰性匹配和贪婪匹配

在量词中的?,*, +,{} 都属于贪婪匹配. 就是尽可能多的匹配到结果.

str: 麻花藤昨天让英雄联盟关服了
reg: 麻花藤.* 

此时匹配的是整句话

在使用.*后面如果加了? 则是尽可能的少匹配. 表示惰性匹配

str: 麻花藤昨天让英雄联盟关服了
reg: 麻花藤.*?

此时匹配的是 麻花藤

str: 
胡辣汤
reg: <.*> 结果:
胡辣汤
str:
胡辣汤
reg: <.*?> 结果:
str:
胡辣汤
reg: <(div|/div*)?> 结果:

.*?x的特殊含义 找到下一个x为止.

str: abcdefgxhijklmn
reg: .*?x
结果:abcdefgx

5. 分组

在正则中使用()进行分组. 比如. 我们要匹配一个相对复杂的身份证号. 身份证号分成两种. 老的身份证号有15位. 新的身份证号有18位. 并且新的身份证号结尾有可能是x.

^[1-9]d{13,16}[0-9x]$
^[1-9]d{14}(d{2}[0-9x])?$
^([1-9]d{16}[0-9x]|[1-9]d{14})$

6. 转义

在正则表达式中, 有很多有特殊意义的是元字符, 比如n和s等,如果要在正则中匹配正常的"n"而不是"换行符"就需要对""进行转义, 变成''.在python中, 无论是正则表达式, 还是待匹配的内容, 都是以字符串的形式出现的, 在字符串中也有特殊的含义, 本身还需要转义. 所以如果匹配一次"n", 字符串中要写成'n', 那么正则里就要写成"n",这样就太麻烦了. 这个时候我们就用到了r' '这个概念, 此时的正则是r'n'就可以了. 记住, 在python中写正则的时候前面带着r

10. re模块

re模块是python提供的一套关于处理正则表达式的模块. 核心功能有四个:

1. findall 查找所有. 返回list

lst = re.findall("m", "mai le fo len, mai ni mei!")
print(lst)     # ['m', 'm', 'm']

lst = re.findall(r"d+", "5点之前. 你要给我5000万")
print(lst)     # ['5', '5000']

2. search 会进行匹配. 但是如果匹配到了第一个结果. 就会返回这个结果. 如果匹配不上search返回的则是None

ret = re.search(r'd', '5点之前. 你要给我5000万').group()
print(ret) # 5

3. match 只能从字符串的开头进行匹配

ret = re.match('a', 'abc').group()  
print(ret)     # a

4. finditer 和findall差不多. 只不过这时返回的是迭代器

it = re.finditer("m", "mai le fo len, mai ni mei!")

for el in it:
    print(el.group()) # 依然需要分组

5. 其他操作

ret = re.split('[ab]', 'qwerafjbcd')  # 先按'a'分割得到'qwer'和'fjbcd',在对'qwer'和'fjbcd'分别按'b'分割
print(ret)  # ['qwer', 'fj', 'cd']

ret = re.sub(r"d+", "_sb_", "jolin250tory250tony250kevin38") # 把字符串中的数字换成__sb__
print(ret)    # jolin_sb_tory_sb_tony_sb_kevin_sb_

ret = re.subn(r"d+", "_sb_", "jolin250tory250tony250kevin38") # 将数字替换成'__sb__',返回元组(替换的结果,替换了多少次)
print(ret)    # ('jolin_sb_tory_sb_tony_sb_kevin_sb_', 4)

obj = re.compile(r'd{3}')  # 将正则表达式编译成为一个 正则表达式对象, 规则要匹配的是3个数字
ret = obj.search('abc123eeee') # 正则表达式对象调用search, 参数为待匹配的字符串
print(ret.group())  # 结果: 123

爬虫重点:

obj = re.compile(r'(?Pd+)(?Pe+)')  # 从正则表达式匹配的内容每个组起名字
ret = obj.search('abc123eeee') # 搜索
print(ret.group())  # 结果: 123eeee
print(ret.group("id"))  # 结果: 123 # 获取id组的内容
print(ret.group("name")) # 结果: eeee # 获取name组的内容

正则在爬虫中的使用(简单案例):

import re
from urllib.request import urlopen
import ssl
# 干掉数字签名证书
ssl._create_default_https_context = ssl._create_unverified_context

def getPage(url):
    response = urlopen(url)
    return response.read().decode('utf-8')

def parsePage(s):
    ret = re.findall(
        '
.*?
.*?(?Pd+).*?(?P.*?)</span>' '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>', s, re.S) return ret def main(num): url = 'https://movie.douban.com/top250?start=%s&filter=' % num response_html = getPage(url) ret = parsePage(response_html) print(ret) count = 0 for i in range(10): # 10页 main(count) count += 25</code></pre> </div> <p>此时利用的就是分组之后. 匹配成功后获取到的是分组后的结果. (?P<id>d+) 此时当前组所匹配的数据就会被分组到id组内. 此时程序可以改写成:</p> <div class="has"> <pre><code>import ssl import re from urllib.request import urlopen # 干掉数字签名证书 ssl._create_default_https_context = ssl._create_unverified_context def getPage(url): response = urlopen(url) return response.read().decode('utf-8') def parsePage(s): com = re.compile( '<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>d+).*?<span class="title">(?P<title>.*?)</span>' '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>', re.S) ret = com.finditer(s) for i in ret: yield { "id": i.group("id"), "title": i.group("title"), "rating_num": i.group("rating_num"), "comment_num": i.group("comment_num"), } def main(num): url = 'https://movie.douban.com/top250?start=%s&filter=' % num response_html = getPage(url) ret = parsePage(response_html) # print(ret) f = open("move_info7", "a", encoding="utf8") for obj in ret: print(obj) data = str(obj) f.write(data + "n") count = 0 for i in range(10): main(count) count += 25</code></pre> </div> <p> 正则表达式和re模块就说这么多. 如果要把正则所有的内容全部讲清楚讲明白, 至少要一周以上的时间. 对于我们日常使用而言. 上述知识点已经够用了. 如果碰到一些极端情况建议想办法分部处理. 先对字符串进行拆分. 然后再考虑用正则.</p> <p><b>11. logging</b></p> <p>首先, logging模块的代码不用你记. 你只需要记住怎么用就可以了(日志等级). 那如何在python中创建这个日志系统呢? 很简单.</p> <blockquote> 1. 导入logging模块. <br>2. 简单配置一下logging <br>3. 出现异常的时候(except). 向日志里写错误信息. </blockquote> <div class="has"> <pre><code># filename: 文件名 # format: 数据的格式化输出. 最终在日志文件中的样子 # 时间-名称-级别-模块: 错误信息 # datefmt: 时间的格式 # level: 错误的级别权重, 当错误的级别权重大于等于leval的时候才会写入文件 logging.basicConfig(filename='x1.txt', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=0) # 当前配置表示 10以上的分数会被写入文件 logging.critical("我是critical") # 50分. 最贵的 logging.error("我是error") # 40分 logging.warning("我是警告") # 警告 30 logging.info("我是基本信息") # 20 logging.debug("我是调试") # 10 logging.log(2, "我是自定义") # 自定义. 看着给分</code></pre> </div> <p>最后, 如果你系统中想要把日志文件分开. 比如. 一个大项目, 有两个子系统, 那两个子系统要分开记录日志. 方便调试. 那怎么办呢? 注意. 用上面的basicConfig是搞不定的. 我们要借助文件助手(FileHandler), 来帮我们完成日志的分开记录</p> <div class="has"> <pre><code>import logging # 创建一个操作日志的对象logger(依赖FileHandler) file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8') file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")) logger1 = logging.Logger('s1', level=logging.ERROR) logger1.addHandler(file_handler) logger1.error('我是A系统') # 再创建一个操作日志的对象logger(依赖FileHandler) file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8') file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")) logger2 = logging.Logger('s2', level=logging.ERROR) logger2.addHandler(file_handler2) logger2.error('我是B系统')</code></pre> </div> <p><b>12. 模块和包(这一节不要预习, 听话, 你看不懂的.)</b></p> <p>本质上模块和包一样. 都是把一些特定功能的代码封装在一起. 方便我们访问和使用.</p> <p>语法:</p> <p>import 模块</p> <p>from xxx import xxx</p> <p>导入模块的时候都做了些什么? </p> <p>首先. 在导入模块的一瞬间. python解释器会先通过sys.modules来判断该模块是否已经导入了该模块. 如果已经导入了则不再导入. 如果该模块还未导入过. 则系统会做三件事.</p> <blockquote> 1. 为导入的模块创立新的名称空间(独立的内存) <br>2. 在新创建的名称空间中运行该模块中的代码 <br>3. 创建模块的名字. 并使用该名称作为该模块在当前模块中引用的名字. <br>a模块: </blockquote> <div class="has"> <pre><code>print("我爱你") def func(): print("我是func") name = "jolin"</code></pre> </div> <p>b模块</p> <div class="has"> <pre><code>import a print(a.name) a.func()</code></pre> </div> <blockquote> 此时, 我们运行b模块. 会发现a模块中的打印语句率先出来. 所以. 它是先把被导入的模块执行了. 然后再执行自己模块的内容 <br>由于模块在导入的时候会创建其自己的名称空间. 所以. 我们在使用模块中的变量的时候一般是不会产生冲突的. <br>特别特别要注意. 如果我们在不同的模块中引入了同一个模块. 并且在某一个模块中改变了被引入模块中的全局变量. 则其他模块看到的值也跟着变. 原因是python的模块只会引入一次. 大家共享同一个名称空间 </blockquote> <p>a模块</p> <div class="has"> <pre><code>name = "join"</code></pre> </div> <p>b模块</p> <div class="has"> <pre><code>import a a.name = "kevin"</code></pre> </div> <p>c模块</p> <div class="has"> <pre><code>import b import a print(a.name)</code></pre> </div> <p>此时运行c模块. 看到的是kevin.</p> <p>关于__main__</p> <p>我们刚才讲了. 如果一个模块被其他模块导入了. 首先会把该模块执行了. 但是, 我们在编写一些测试性的代码的时候, 经常的会在自己模块里运行一次看看效果. 比如:</p> <div class="has"> <pre><code>def eat(): print("我特别喜欢吃骨头") # 测试一下, 看看好用不 eat()</code></pre> </div> <p>但是上述代码如果被其他模块使用, 导入的时候. 会自动的把这个模块执行了. </p> <div class="has"> <pre><code>import a # 这句话会自动执行a模块. 但是a模块里有些代码是测试用的. a.eat() # 这才是我要执行的代码</code></pre> </div> <p>怎么办. 这时, 我们一个模块就会有两种执行方式, 一种是被别人导入了. 会执行, 还有一种是右键run执行. 那如何区分呢? 在每个模块里. 都有一个默认的属性叫__name__. 这个__name__比较特殊, 如果该模块是被别人导入的. __name__就是这个模块名, 而如果该模块是被run执行的就是__main__. 所以, 我们可以通过__name__ == "__main__"来区分该模块是被导入的还是被run执行的. 像我们写的那种测试性的代码. 肯定是想在run的时候执行. 所以. 我们通常会把测试性的代码写在__main__里, 更改a模块如下:</p> <div class="has"> <pre><code>def eat(): print("我特别喜欢吃骨头") # 此时, 只有该模块被右键run执行的时候. 才会执行下面的代码 if __name__ == '__main__': eat()</code></pre> </div> <p>关于from xxx import xxx 它的加载过程和import是一样的. 区别就是他会把模块中的某些个内容单独导入到当前模块. 和import的区别是: import导入的是一个整体. from 导入的是一部分.</p> <div class="has"> <pre><code>import json # 导入整个json from json import dumps, loads # 从json中导入dumps和loads</code></pre> </div> <p>正确的导入模块的顺序:</p> <p>1. 所有的模块导入都要写在最上面. 这是最基本的</p> <p>2. 先引入内置模块</p> <p>3. 再引入扩展模块</p> <p>4. 最后引入你自己定义的模块</p> <p>然后我们来看看包</p> <p>包的含义其实很简单, 就是文件夹. 我们一个py文件可能写不了所有的功能模块. 怎么办. 多写几个py文件. 然后封装在一个文件夹里. 这个文件夹就是包. 使用起来呢, 和我们用模块差不多. 不过有一些小小的坑. 在写代码的时候尽量避免就好了</p> <p>首先, 我们创建包:</p> <div class="has"> <pre><code>import os os.makedirs('glance/api') os.makedirs('glance/cmd') os.makedirs('glance/db') l = [] l.append(open('glance/__init__.py','w')) l.append(open('glance/api/__init__.py','w')) l.append(open('glance/api/policy.py','w')) l.append(open('glance/api/versions.py','w')) l.append(open('glance/cmd/__init__.py','w')) l.append(open('glance/cmd/manage.py','w')) l.append(open('glance/db/__init__.py','w')) l.append(open('glance/db/models.py','w')) map(lambda f:f.close() ,l)</code></pre> </div> <p>各个包下的代码:</p> <div class="has"> <pre><code>#policy.py def get(): print('from policy.py') #versions.py def create_resource(conf): print('from version.py: ',conf) #manage.py def main(): print('from manage.py') #models.py def register_models(engine): print('from models.py: ',engine)</code></pre> </div> <p>接下来. 我们在test中使用包中的内容. 并且, 我们导入包的时候可以使用import或者from xxx import xxx这种形式.</p> <p>首先, 我们看import</p> <div class="has"> <pre><code>import glance.db.models glance.db.models.register_models('mysql')</code></pre> </div> <p>没问题, 很简单, 我们还可以使用from xxx import xxx 来导入包内的模块</p> <div class="has"> <pre><code>from glance.api.policy import get get()</code></pre> </div> <p>也很简单, 但是, 要注意. from xxx import xxx这种形式, import后面不可以出现"点" 也就是说from a.b import c是ok的. 但是 from a import b.c 是错误的</p> <p>好了, 到目前为止, 简单的包已经可以使用了. 那包里的__init__.py是什么鬼? 其实. 不论我们使用哪种方式导入一个包, 只要是第一次导入包或者是包的任何其他部分, 都会先执行__init__.py文件. 这个文件可以是空的. 但也可以存放一些初始化的代码. (随意在glance中的__init__.py都可以进行测试)</p> <p>接下来, 我们来看一下绝对导入和相对导入, 我们的最顶级包glance是写给别人用的. 然后再glance包内部也会有彼此之间互相导入的需求, 这时候就又绝对导入和相对导入两种方式了.</p> <p> 1. 绝对导入: 以glance作为起始</p> <p> 2. 相对导入: 用. 或者..作为起始</p> <p>例如, 我们在glance/api/version.py中使用glance/cmd/manage.py</p> <div class="has"> <pre><code># 在glance/api/version.py #绝对导入 from glance.cmd import manage manage.main() #相对导入 # 这种情形不可以在versions中启动程序. # attempted relative import beyond top-level package from ..cmd import manage manage.main()</code></pre> </div> <p>测试的时候要注意. python包路径跟运行脚本所在的目录有关系. 说白了. 就是你运行的py文件所在的目录. 在python中不允许你运行的程序导包的时候超过当前包的范围(相对导入). 如果使用绝对导入. 没有这个问题. 换个说法. 如果你在包内使用了相对导入. 那在使用该包内信息的时候. 只能在包外面导入.</p> <p>接下来. 我们来看一个大坑. 比如. 我们想在policy中使用verson中的内容.</p> <div class="has"> <pre><code># 在policy.py import versions</code></pre> </div> <p>如果我们程序的入口是policy.py 那此时程序是没有任何问题的. 但是如果我们在glance外面import了glance中的policy就会报错 原因是如果在外面访问policy的时候. sys.path中的路径就是外面. 所以根本就不能直接找到versions模块. 所以一定会报错:</p> <div class="has"> <pre><code>ModuleNotFoundError: No module named 'versions'</code></pre> </div> <p>在导包出错的时候. 一定要先看sys.path 看一下是否真的能获取到包的信息.</p> <p>最后, 我们看一下如何单独导入一个包.</p> <div class="has"> <pre><code># 在test.py中 import glance</code></pre> </div> <p>此时导入的glance什么都做不了. 因为在glance中的__init__.py中并没有关于子包的加载. 此时我们需要在__init__.py中分别取引入子包中的内容.</p> <p>我们自己创建的py文件的名字不要和系统内置的模块重名</p> <p><b>13. 第三方模块安装</b></p> <div class="has"> <pre><code>pip install 模块 -i 国内源</code></pre> </div> <p>注意, 如果pip在控制台输入没有反应, 很可能是环境变量没有配置成功. 需要把python中的Script文件夹也配置到path环境变量中才可以.</p> <p>有些情况我们安装某些模块的时候可能需要对pip进行升级</p> <div class="has"> <pre><code>pip install -U pip # 更新pip pip uninstall 模块 # 卸载模块 pip show 模块 # 显示xxx模块 pip list # 显示出已安装的模块</code></pre> </div> <p><b>练习:</b></p> <p>1、计算两个格式化时间之间差了多少年月日时分秒</p> <p>2、生成一个6位随机验证码(包含数字和大小写字母)</p> <p>3、编写红包, 制定金额和个数随机分配红包金额</p> <p>4、分别列出给定目录下所有的文件和文件夹</p> <p>5、获取当前文件所在目录 os.path.dirname()</p> <p>6、在当前目录下创建一个文件夹、在这个文件夹下创建一个文件</p> <p>7、计算某路径下所有文件和文件夹的总大小</p> <p>8、写正则匹配一下内容:</p> <blockquote> 1. 匹配邮箱 <br>2. 匹配手机号 <br>3. 匹配生日. 日期格式(yyyy-MM-dd) <b>1. 编写爬虫, 抓取电影天堂(https://www.dy2018.com/)中的指定位置电影信息, 并将抓取的电影名称, 电影下载链接存储在movie.json文件中.</b> </blockquote> <p></p> <div style="text-align:center;"> <a href="http://img.e-com-net.com/image/info8/4a483463205249699f06997c6ea891aa.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/4a483463205249699f06997c6ea891aa.jpg" alt="python模块_Python常用模块_第2张图片" width="650" height="396" style="border:1px solid black;"></a> </div> <p><b>2. 尝试使用第三方模块requests+bs4. 抓取<北京新发地>菜价.</b></p> <div class="has"> <pre><code>import requests resp = requests.get("http://www.xinfadi.com.cn/marketanalysis/0/list/1.shtml") resp.encoding = 'utf-8' print(resp.text)</code></pre> </div> <p>注:bs4需要先自学一下下哦。</p> <p> 转载自:码农分享联盟</p> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1358751404855943168"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(python模块)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1949782693982040064.htm" title="Python模块化编程:高效代码组织技巧" target="_blank">Python模块化编程:高效代码组织技巧</a> <span class="text-muted">Gession-杰</span> <a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80/1.htm">Python基础</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">网络爬虫</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a> <div>模块化编程的概念模块化编程是一种将程序分解为独立,可重用的"模块"(Module)的编程思想,通过合理划分代码结构,实现**“高内聚,低耦合”**的设计目标。在Python中,包和模块是代码组织和管理的重要概念。这种思想能显著提升代码的可读性,可复用性和可维护性,是现代编程中广泛采用的核心范式之一。1.模块(Module)1.1基本概念**定义:**模块是一个独立的代码文件(如Python的.py</div> </li> <li><a href="/article/1949700935873785856.htm" title="模块" target="_blank">模块</a> <span class="text-muted">骚X</span> <div>Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。defprint_func(par):print"Hello:",parreturn模块的引入1import语句import模块名导入模块importsupport现在可以调用模块里包含的函数了support.print_func("Runoob")2from...import语句</div> </li> <li><a href="/article/1949008253480398848.htm" title="python之模块(Module)和包(Package)" target="_blank">python之模块(Module)和包(Package)</a> <span class="text-muted"></span> <div>一、模块1.概念什么是模块(Module)?Python模块就是一个.py文件,其中可以包含函数、类、变量、执行语句等,用于组织和复用代码。比如:#文件my_module.pydefhello():print("Hellofrommodule!")2.分类模块可分为三类类型描述示例内置模块Python自带,不用安装math,os,sys,random第三方模块需通过pip安装requests,nu</div> </li> <li><a href="/article/1947758708469592064.htm" title="Python练习(7)Python模块与方法:20道核心实战练习题(含答案与深度解析)(上)" target="_blank">Python练习(7)Python模块与方法:20道核心实战练习题(含答案与深度解析)(上)</a> <span class="text-muted"></span> <div>目录引言基础篇(5题)练习1:模块导入方式对比练习2:模块别名应用练习3:条件导入模块练习4:模块搜索路径管理练习5:包结构初始化进阶篇(5题)练习6:模块重载机制练习7:类方法与静态方法区分练习8:魔术方法应用练习9:模块级变量作用域练习10:装饰器实现方法注册高级技巧篇(5题)练习11:动态模块导入练习12:命名空间包练习13:模块卸载陷阱练习14:元类方法控制练习15:上下文管理器方法实战案</div> </li> <li><a href="/article/1947434846804570112.htm" title="Python模块的动态加载机制" target="_blank">Python模块的动态加载机制</a> <span class="text-muted">weixin_30632089</span> <a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Python在运行环境初始化中,就将sysmodule加载到了内存中,实际上,Python是将一大批的module加载到了内存中。但是为了使local名字空间能够达到最干净的效果,Python并没有将这些符号暴露在当前的local名字空间中,而是需要用户显式的通过import机制通知Python:需要将这个符号引入到local名字空间中。这些预先被加载进内存的module存放在sys.module</div> </li> <li><a href="/article/1947322022312865792.htm" title="Python 单例模式几种实现方式" target="_blank">Python 单例模式几种实现方式</a> <span class="text-muted">@MMiL</span> <a class="tag" taget="_blank" href="/search/PyBuild/1.htm">PyBuild</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/matplotlib/1.htm">matplotlib</a><a class="tag" taget="_blank" href="/search/numpy/1.htm">numpy</a><a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a> <div>文章目录1基础实现方式1.1模块导入法(推荐)1.2重写`__new__`方法2进阶实现方式2.1元类(Metaclass)控制2.2线程安全单例2.3单例装饰器3关键问题分析4实践建议各位老板好,单例模式确保一个类只有一个实例,并提供全局访问点。适用于日志记录、配置管理、数据库连接池等场景。以下是Python单例模式的5种实现方式:1基础实现方式1.1模块导入法(推荐)Python模块天然支持单</div> </li> <li><a href="/article/1946727320211484672.htm" title="Django模板——自定义过滤器" target="_blank">Django模板——自定义过滤器</a> <span class="text-muted">折月竹酒</span> <a class="tag" taget="_blank" href="/search/Django/1.htm">Django</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E6%9D%BF/1.htm">模板</a><a class="tag" taget="_blank" href="/search/%E8%BF%87%E6%BB%A4%E5%99%A8/1.htm">过滤器</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%AE%9A%E4%B9%89/1.htm">自定义</a> <div>文章目录Django模板——自定义过滤器1代码布局1.1app特有模板标签1.2可复用标签2定义过滤器2.1模板过滤器的本质3注册过滤器4使用5.期望字符串的模板过滤器Django模板——自定义过滤器1代码布局1.1app特有模板标签app目录下创建名为templatetags的包templatetags目录下创建python模块(通常只需创建.py文件)1.2可复用标签专门创建一个做模板标签的a</div> </li> <li><a href="/article/1942595127415468032.htm" title="Springboot和Python之间通过RabbitMQ进行双向异步消息交互demo示例" target="_blank">Springboot和Python之间通过RabbitMQ进行双向异步消息交互demo示例</a> <span class="text-muted">同心圆码农</span> <a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java-rabbitmq/1.htm">java-rabbitmq</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>SpringBoot后端和Python算法之间解耦设计,采用通过消息总线RabbitMQ进行双向异步交互,以下是一个demo样例,罗列出了实现该功能需要做的工作,包括软件安装、RabbitMQ基本介绍、Springboot后端demo代码、Pythondemo代码、运行流程以及调试遇到问题软件安装Win10本地需要安装RabbitMQ,作为Springboot后端和Python模块通讯的消息中间件</div> </li> <li><a href="/article/1942428730051850240.htm" title="Python模块中__all__变量失效问题深度解析" target="_blank">Python模块中__all__变量失效问题深度解析</a> <span class="text-muted">盛夏绽放</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%9C%89%E9%97%AE%E5%BF%85%E7%AD%94/1.htm">有问必答</a> <div>文章目录Python模块中`__all__`变量失效问题深度解析一、`__all__`的正确作用场景二、`__all__`不起作用的常见原因1.未使用`from...import\*`导入2.`__all__`定义不完整或错误3.子模块未正确导出4.Python解释器缓存问题5.相对导入路径错误三、解决方案1.确保使用`from...import\*`测试2.检查`__init__.py`的导出逻</div> </li> <li><a href="/article/1942310192918097920.htm" title="Python: 包" target="_blank">Python: 包</a> <span class="text-muted"></span> <div>一、Python包基础概念1.1什么是Python包Python包(Package)是一种组织Python模块的方式,它使用目录结构来组织相关的模块。一个包本质上是一个包含__init__.py文件的目录,该文件可以是空的,也可以包含包的初始化代码。my_package/├──__init__.py├──module1.py└──module2.py1.2包与模块的区别模块(Module):单个.</div> </li> <li><a href="/article/1941340361133715456.htm" title="使用Python操作SQLite数据库" target="_blank">使用Python操作SQLite数据库</a> <span class="text-muted"></span> <div>大家好,在数据涌现的今天,数据库已成为生活中不可或缺的工具。Python作为一种流行的编程语言,内置了多种用于操作数据库的库,其中之一就是SQLite。SQLite是一种轻量级的关系型数据库管理系统,它在Python中的应用非常广泛。本文将介绍如何使用Python操作SQLite数据库,希望能够帮助大家提高数据处理能力。1.SQLite3简介SQLite3是一个内置的Python模块,可以通过Py</div> </li> <li><a href="/article/1940879596270448640.htm" title="python系列:[Python系列-26]:importlib - 动态导入其他python模块库" target="_blank">python系列:[Python系列-26]:importlib - 动态导入其他python模块库</a> <span class="text-muted">坦笑&&life</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>[Python系列-26]:importlib-动态导入其他python模块库[Python系列-26]:importlib-动态导入其他python模块库第1章模块导入概述1.1概述1.2模块的作用(1)代码重用(2)避免变量名的冲突(3)便于组织大规模的工程文件第2章导入其他模块程序的方式2.1import文件名(1)导入库的方法(2)Importas语句(2)使用库的方法2.2from-im</div> </li> <li><a href="/article/1940233034263490560.htm" title="深入解析youtube-dl模块:视频与播放列表信息提取指南" target="_blank">深入解析youtube-dl模块:视频与播放列表信息提取指南</a> <span class="text-muted"></span> <div>深入解析youtube-dl模块:视频与播放列表信息提取指南youtube-dl项目地址:https://gitcode.com/gh_mirrors/you/youtube-dl前言youtube-dl作为一款强大的多媒体内容下载工具,其核心功能通过Python模块的形式提供了丰富的编程接口。本文将深入探讨如何使用youtube-dl模块来提取视频和播放列表信息,帮助开发者更好地集成这一功能到自</div> </li> <li><a href="/article/1939089480522723328.htm" title="python日期时间用哪个模块_python模块介绍-datetime介绍:基本的日期和时间类型" target="_blank">python日期时间用哪个模块_python模块介绍-datetime介绍:基本的日期和时间类型</a> <span class="text-muted"></span> <div>待更新介绍gevent是基于协程的Python网络库。特点:基于libev的快速事件循环(Linux上epoll,FreeBSD上kqueue)。基于greenlet的轻量级执行单元。API的概念和Python标准库一致(如事件,队列)。可以配合socket,ssl模块使用。能够使用标准库和第三方模块创建标准的阻塞套接字(gevent.monkey)。默认通过线程池进行DNS查询,也可通过c-ar</div> </li> <li><a href="/article/1938925185101000704.htm" title="【半夜爬起来学python】零基础学习Pygame|第一期|知识点+小球反弹游戏案例" target="_blank">【半夜爬起来学python】零基础学习Pygame|第一期|知识点+小球反弹游戏案例</a> <span class="text-muted">奈樱.</span> <a class="tag" taget="_blank" href="/search/python%28pygame%29/1.htm">python(pygame)</a><a class="tag" taget="_blank" href="/search/pygame/1.htm">pygame</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/pip/1.htm">pip</a> <div>一.安装PygamePygame是跨平台Python模块,很多编译器不会向用户提供该模块,需要我们自己安装。安装步骤:打开Pygame官网:www.pygame.org点击PYGAME2.6.0-25JUN,2024下载好之后,解压压缩包,安装路径最好放在c盘里Administrator文件里在菜单栏点击搜索,输入cmd,找到“命令提示符”输入命令pipinstallpygame运行的时候会发现命</div> </li> <li><a href="/article/1938925058932142080.htm" title="【Python】Pygame从零开始学习" target="_blank">【Python】Pygame从零开始学习</a> <span class="text-muted">宅男很神经</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>模块一:Pygame入门与核心基础本模块将引导您完成Pygame的安装,并深入理解Pygame应用程序的基石——游戏循环、事件处理、Surface与Rect对象、显示控制以及颜色管理。第一章:Pygame概览与环境搭建1.1什么是Pygame?Pygame是一组专为编写视频游戏而设计的Python模块。它构建在优秀的SDL(SimpleDirectMediaLayer)库之上,允许您使用Pytho</div> </li> <li><a href="/article/1937370703259037696.htm" title="Pyeeg模块部分功能介绍" target="_blank">Pyeeg模块部分功能介绍</a> <span class="text-muted">脑电情绪识别</span> <a class="tag" taget="_blank" href="/search/%E8%84%91%E7%94%B5%E6%83%85%E7%BB%AA%E8%AF%86%E5%88%AB/1.htm">脑电情绪识别</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a> <div>1.pyeeg简单介绍PyEEG是一个Python模块(即函数库),用于提取EEG(脑电)特征。正在添加更多功能。它包含构建用于特征提取的数据的函数,例如从给定的时间序列构建嵌入序列。它还能够将功能导出为svmlight格式,以便调用机器学习及深度学习工具。2.部分函数介绍1.pyeeg.ap_entropy(X,M,R)pyeeg.ap_entropy(X, M, R)计算时间序列X的近似熵(A</div> </li> <li><a href="/article/1935927716951945216.htm" title="[python] __init__的使用" target="_blank">[python] __init__的使用</a> <span class="text-muted">进阶的小蜉蝣</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>文章转自:为什么大厂代码都有__init__.py?这篇文章彻底终结你的困惑!如果你经常写Python代码,应该经常在一些项目里见过__init__.py这个文件。尤其是当你接触到大型Python项目时,它几乎无处不在。那么,__init__.py究竟是做什么的?什么时候需要用它?它是如何工作的?今天,我们就来彻底搞清楚这个问题,带你从Python模块(module)开始,一步步深入到Python</div> </li> <li><a href="/article/1935800872680353792.htm" title="linux bam文件格式,pysam - 多种格式基因组数据(sam/bam/vcf/bcf/cram/…)读写与处理模块(python)..." target="_blank">linux bam文件格式,pysam - 多种格式基因组数据(sam/bam/vcf/bcf/cram/…)读写与处理模块(python)...</a> <span class="text-muted">masaki叔还是这么可爱</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/bam%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F/1.htm">bam文件格式</a> <div>在开发基因组相关流程或工具时,经常需要读取、处理和创建bam、vcf、bcf文件。目前已经有一些主流的处理此类格式文件的工具,如samtools、picard、vcftools、bcftools,但此类工具集成的大多是标准功能,在编程时如果直接调用的话往往显得不够灵活。本文介绍的是一个处理基因组数据的python模块,它打包了htslib-1.3、samtools-1.3和bcftools-1.3</div> </li> <li><a href="/article/1935274761672257536.htm" title="解决安装Python后IDA中找不到Python模块的问题" target="_blank">解决安装Python后IDA中找不到Python模块的问题</a> <span class="text-muted">dvlinker</span> <a class="tag" taget="_blank" href="/search/C%2FC%2B%2B%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%AE%9E%E6%88%98/1.htm">C/C++软件开发从入门到实战</a><a class="tag" taget="_blank" href="/search/IDA/1.htm">IDA</a><a class="tag" taget="_blank" href="/search/%E5%8F%8D%E6%B1%87%E7%BC%96%E5%B7%A5%E5%85%B7/1.htm">反汇编工具</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a> <div>IDA中以插件的方式支持Python的嵌入,所以在安装IDA时也需要安装Python。有天在一台新PC上安装完IDA和Python之后,启动IDA报找不到Python模块的问题,如下所示:具体的提示信息为:LoadLibrary(C:\Users\Administrator\Desktop\常用软件工具\IDA绿色版及Python\ida61-hexrays15-rdw\ida61\plugins</div> </li> <li><a href="/article/1934765194995625984.htm" title="da y30" target="_blank">da y30</a> <span class="text-muted">m0_62568655</span> <a class="tag" taget="_blank" href="/search/python%E8%AE%AD%E7%BB%83%E8%90%A5/1.htm">python训练营</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Python模块导入知识点回顾1.导入官方库的三种手段1.1直接导入整个模块importmathprint(math.pi)1.2从模块中导入特定内容frommathimportpi,sqrtprint(pi)print(sqrt(16))1.3导入模块并设置别名importnumpyasnpimportpandasaspd2.导入自定义库/模块的方式2.1同级目录导入importmy_modul</div> </li> <li><a href="/article/1934220371247034368.htm" title="将图片合成为视频(基于 OpenCV)" target="_blank">将图片合成为视频(基于 OpenCV)</a> <span class="text-muted">univerbright</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%90%88%E6%88%90%E8%A7%86%E9%A2%91/1.htm">图像合成视频</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a> <div>本文将介绍如何使用Python和OpenCV将一组图像文件合成为一个视频文件。你将学会:使用os模块遍历文件夹中的图像使用cv2.VideoWriter写入视频设置分辨率与帧率参数对图像尺寸进行统一处理简单的视频生成应用开发1.所需模块与安装本章需要以下Python模块:opencv-python:图像处理和视频写入os:文件路径和文件遍历安装指令(在AnacondaPrompt中执行):pipi</div> </li> <li><a href="/article/1934193400312033280.htm" title="关于package.xml和CMakeList.txt的解读" target="_blank">关于package.xml和CMakeList.txt的解读</a> <span class="text-muted">油炸小蚊子</span> <a class="tag" taget="_blank" href="/search/ros/1.htm">ros</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>关于package.xml和CMakeList.txt的解读前言一、关于package.xml文件的讲解?二、关于CMakeList.txt文件的讲解1.必需的CMake版本:cmake_minimum_required()2.软件包名:project()3.查找编译依赖的其他CMake/Catkin包(声明依赖库):find_package()4.启动Python模块支持:catkin_pyth</div> </li> <li><a href="/article/1932404908728840192.htm" title="Python 之 C C++ 混合编程_python脚本 编译c++" target="_blank">Python 之 C C++ 混合编程_python脚本 编译c++</a> <span class="text-muted">2401_87215196</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>一、问题Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结。二、Python调用C/C++1、Python调用C动态链接库Python调用C库比较简单,不经过任何封装打包成so,再使用python的ctypes调用即可。(1)C语言文件:pycall.c/***gcc-olibpycall.so-shared-fPICpycall.c*/#include#incl</div> </li> <li><a href="/article/1932191473156026368.htm" title="探索Yahoo财经数据的利器:yhoo-finance Python库" target="_blank">探索Yahoo财经数据的利器:yhoo-finance Python库</a> <span class="text-muted">平奇群Derek</span> <div>探索Yahoo财经数据的利器:yhoo-financePython库去发现同类优质开源项目:https://gitcode.com/1、项目介绍yhoo-finance是一个Python模块,专为获取Yahoo!Finance平台上的股票数据而设计。通过简单易用的API接口,开发者可以轻松地访问各种实时和历史股票信息,甚至包括货币汇率数据。这个项目不仅适用于个人研究和学习,还适用于教育领域的数据案</div> </li> <li><a href="/article/1931818169496825856.htm" title="Python 中的模块" target="_blank">Python 中的模块</a> <span class="text-muted">Json19970108018</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E8%BF%9B%E9%98%B6%E5%BA%94%E7%94%A8%E6%95%99%E7%A8%8B/1.htm">进阶应用教程</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>Python模块是一个Python文件,定义了各种功能接口。把复杂的功能封装为模块(又称为库),将功能实现的细节隐藏起来,使用该模块(库)的程序员不需要了解实现的细节。通过调用模块封装好的功能,可以用仅仅几行Python代码实现某项复杂的功能,例如可以用一行代码就实现一个Web服务器。在Python的应用领域中,如:web开发、人工智能、网络爬虫、数据分析等领域,已经存在了大量的模块,使用这些模块</div> </li> <li><a href="/article/1931610017895608320.htm" title="Linux环境下不安装DM数据库,编译dmPython" target="_blank">Linux环境下不安装DM数据库,编译dmPython</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E8%BE%BE%E6%A2%A6%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">达梦数据库</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/dmPython/1.htm">dmPython</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>一、简介dmPython是DM提供的依据PythonDBAPIversion2.0中API使用规定而开发的数据库访问接口。dmPython实现这些API,使Python应用程序能够对DM数据库进行访问。dmPython通过调用DMDPI接口完成python模块扩展。在其使用过程中,除Python标准库以外,还需要DPI的运行环境。二、使用场景应用服务器与数据库服务器分开规划,且应用服务器上不安装数</div> </li> <li><a href="/article/1930554451890860032.htm" title="Python模块与包:代码组织的“收纳师“,让你的项目告别“垃圾堆“" target="_blank">Python模块与包:代码组织的“收纳师“,让你的项目告别“垃圾堆“</a> <span class="text-muted">小张在编程</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>你有没有过这样的经历?写了1000行代码后,想找某个功能函数却得满屏幕翻找;想复用之前写的工具函数,只能复制粘贴;和同事协作时,两人的utils.py文件名冲突到怀疑人生……这些让人抓耳挠腮的场景,其实都能用Python的"模块"和"包"轻松解决——它们就像代码世界的收纳盒与标签纸,能让你的项目从"垃圾堆"变成"图书馆"。今天我们就来聊聊这个让代码更优雅的核心技能。一、模块:代码世界的"工具箱"1</div> </li> <li><a href="/article/1930068242756333568.htm" title="【Python】xlsxwriter的使用" target="_blank">【Python】xlsxwriter的使用</a> <span class="text-muted">精神病院VIP特级病人</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>第一章:xlsxwriter入门与核心概念1.1xlsxwriter概述xlsxwriter是一个Python模块,用于将文本、数字、公式以及格式化信息写入MicrosoftExcel2007+.xlsx格式的文件。主要特点:仅创建新文件:这是最重要的特性。它不能读取或修改现有的Excel文件。高性能:对于写入大量数据,xlsxwriter通常比其他库有更好的性能,部分原因在于其流式写入和内存优化</div> </li> <li><a href="/article/1929537936961892352.htm" title="人脸识别课件需要安装的python模块" target="_blank">人脸识别课件需要安装的python模块</a> <span class="text-muted">weixin_30532987</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Python3.6安装face_recognition人脸识别库https://www.jianshu.com/p/8296f2aac1aa转载于:https://www.cnblogs.com/SakuraYuanYuan/p/11406572.html</div> </li> <li><a href="/article/63.htm" title="关于旗正规则引擎规则中的上传和下载问题" target="_blank">关于旗正规则引擎规则中的上传和下载问题</a> <span class="text-muted">何必如此</span> <a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD/1.htm">文件下载</a><a class="tag" taget="_blank" href="/search/%E5%8E%8B%E7%BC%A9/1.htm">压缩</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/1.htm">文件上传</a> <div>文件的上传下载都是数据流的输入输出,大致流程都是一样的。 一、文件打包下载 1.文件写入压缩包 string mainPath="D:\upload\";     下载路径 string tmpfileName=jar.zip;        &n</div> </li> <li><a href="/article/190.htm" title="【Spark九十九】Spark Streaming的batch interval时间内的数据流转源码分析" target="_blank">【Spark九十九】Spark Streaming的batch interval时间内的数据流转源码分析</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a> <div>  以如下代码为例(SocketInputDStream): Spark Streaming从Socket读取数据的代码是在SocketReceiver的receive方法中,撇开异常情况不谈(Receiver有重连机制,restart方法,默认情况下在Receiver挂了之后,间隔两秒钟重新建立Socket连接),读取到的数据通过调用store(textRead)方法进行存储。数据</div> </li> <li><a href="/article/317.htm" title="spark master web ui 端口8080被占用解决方法" target="_blank">spark master web ui 端口8080被占用解决方法</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/8080/1.htm">8080</a><a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3%E5%8D%A0%E7%94%A8/1.htm">端口占用</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/master+web+ui/1.htm">master web ui</a> <div>spark master web ui 默认端口为8080,当系统有其它程序也在使用该接口时,启动master时也不会报错,spark自己会改用其它端口,自动端口号加1,但为了可以控制到指定的端口,我们可以自行设置,修改方法:   1、cd SPARK_HOME/sbin   2、vi start-master.sh     3、定位到下面部分</div> </li> <li><a href="/article/444.htm" title="oracle_执行计划_谓词信息和数据获取" target="_blank">oracle_执行计划_谓词信息和数据获取</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92/1.htm">执行计划</a> <div>  oracle_执行计划_谓词信息和数据获取(上) 一:简要说明 在查看执行计划的信息中,经常会看到两个谓词filter和access,它们的区别是什么,理解了这两个词对我们解读Oracle的执行计划信息会有所帮助。 简单说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引),而filter表示谓词条件的值并不会影响数据访问路径,只起到</div> </li> <li><a href="/article/571.htm" title="spring中datasource配置" target="_blank">spring中datasource配置</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/dataSource/1.htm">dataSource</a> <div>datasource配置有很多种,我介绍的一种是采用c3p0的,它的百科地址是: http://baike.baidu.com/view/920062.htm   <!-- spring加载资源文件 --> <bean name="propertiesConfig" class="org.springframework.b</div> </li> <li><a href="/article/698.htm" title="web报表工具FineReport使用中遇到的常见报错及解决办法(三)" target="_blank">web报表工具FineReport使用中遇到的常见报错及解决办法(三)</a> <span class="text-muted">老A不折腾</span> <a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/FAQ/1.htm">FAQ</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E8%A1%A8%E8%BD%AF%E4%BB%B6/1.htm">报表软件</a> <div>这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。   出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。 1、repeated column width is largerthan paper width: 这个看这段话应该是很好理解的。比如做的模板页面宽度只能放</div> </li> <li><a href="/article/825.htm" title="mysql 用户管理" target="_blank">mysql 用户管理</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/user/1.htm">user</a> <div>1.新建用户 //登录MYSQL@>mysql -u root -p@>密码//创建用户mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’));//刷新系统权限表mysql>flush privileges;这样就创建了一个名为:</div> </li> <li><a href="/article/952.htm" title="关于使用Spring导致c3p0数据库死锁问题" target="_blank">关于使用Spring导致c3p0数据库死锁问题</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Spring+%E5%85%A5%E9%97%A8/1.htm">Spring 入门</a><a class="tag" taget="_blank" href="/search/Spring+%E5%AE%9E%E4%BE%8B/1.htm">Spring 实例</a><a class="tag" taget="_blank" href="/search/Spring3/1.htm">Spring3</a><a class="tag" taget="_blank" href="/search/Spring+%E6%95%99%E7%A8%8B/1.htm">Spring 教程</a> <div>这个问题我实在是为整个 springsource 的员工蒙羞 如果大家使用 spring 控制事务,使用 Open Session In View 模式, com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.</div> </li> <li><a href="/article/1079.htm" title="百度词库联想" target="_blank">百度词库联想</a> <span class="text-muted">annan211</span> <a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a> <div> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>RunJS</title&g</div> </li> <li><a href="/article/1206.htm" title="int数据与byte之间的相互转换实现代码" target="_blank">int数据与byte之间的相互转换实现代码</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E7%A7%BB/1.htm">位移</a><a class="tag" taget="_blank" href="/search/int%E8%BD%ACbyte/1.htm">int转byte</a><a class="tag" taget="_blank" href="/search/byte%E8%BD%ACint/1.htm">byte转int</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E7%9A%84%E5%AE%9E%E7%8E%B0/1.htm">基本数据类型的实现</a> <div>在BMP文件和文件压缩时需要用到的int与byte转换,现将理解的贴出来;   主要是要理解;位移等概念 http://baihe747.iteye.com/blog/2078029   int转byte;   byte转int;   /** * 字节转成int,int转成字节 * @author Administrator * </div> </li> <li><a href="/article/1333.htm" title="简单模拟实现数据库连接池" target="_blank">简单模拟实现数据库连接池</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/%E7%AE%80%E5%8D%95%E6%A8%A1%E6%8B%9F%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">简单模拟实现数据库连接池</a> <div>简单模拟实现数据库连接池 实例1: package com.bijian.thread; public class DB { //private static final int MAX_COUNT = 10; private static final DB instance = new DB(); private int count = 0; private i</div> </li> <li><a href="/article/1460.htm" title="一种基于Weblogic容器的鉴权设计" target="_blank">一种基于Weblogic容器的鉴权设计</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/weblogic/1.htm">weblogic</a> <div>        服务器对请求的鉴权可以在请求头中加Authorization之类的key,将用户名、密码保存到此key对应的value中,当然对于用户名、密码这种高机密的信息,应该对其进行加砂加密等,最简单的方法如下: String vuser_id = "weblogic"; String vuse</div> </li> <li><a href="/article/1587.htm" title="【RPC框架Hessian二】Hessian 对象序列化和反序列化" target="_blank">【RPC框架Hessian二】Hessian 对象序列化和反序列化</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hessian/1.htm">hessian</a> <div> 任何一个对象从一个JVM传输到另一个JVM,都要经过序列化为二进制数据(或者字符串等其他格式,比如JSON),然后在反序列化为Java对象,这最后都是通过二进制的数据在不同的JVM之间传输(一般是通过Socket和二进制的数据传输),本文定义一个比较符合工作中。   1. 定义三个POJO    Person类 package com.tom.hes</div> </li> <li><a href="/article/1714.htm" title="【Hadoop十四】Hadoop提供的脚本的功能" target="_blank">【Hadoop十四】Hadoop提供的脚本的功能</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>1. hadoop-daemon.sh 1.1 启动HDFS ./hadoop-daemon.sh start namenode ./hadoop-daemon.sh start datanode  通过这种逐步启动的方式,比start-all.sh方式少了一个SecondaryNameNode进程,这不影响Hadoop的使用,其实在 Hadoop2.0中,SecondaryNa</div> </li> <li><a href="/article/1841.htm" title="中国互联网走在“灰度”上" target="_blank">中国互联网走在“灰度”上</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/%E7%AE%A1%E7%90%86+%E7%81%B0%E5%BA%A6/1.htm">管理 灰度</a> <div>中国互联网走在“灰度”上(转) 文/孕峰   第一次听说灰度这个词,是任正非说新型管理者所需要的素质。第二次听说是来自马化腾。似乎其他人包括马云也用不同的语言说过类似的意思。   灰度这个词所包含的意义和视野是广远的。要理解这个词,可能同样要用“灰度”的心态。灰度的反面,是规规矩矩,清清楚楚,泾渭分明,严谨条理,是决不妥协,不转弯,认死理。黑白分明不是灰度,像彩虹那样</div> </li> <li><a href="/article/1968.htm" title="java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。" target="_blank">java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class PrintMatrixClockwisely { /** * Q51.输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 </div> </li> <li><a href="/article/2095.htm" title="mongoDB 用户管理" target="_blank">mongoDB 用户管理</a> <span class="text-muted">开窍的石头</span> <a class="tag" taget="_blank" href="/search/mongoDB%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86/1.htm">mongoDB用户管理</a> <div>  1:添加用户    第一次设置用户需要进入admin数据库下设置超级用户(use admin)      db.addUsr({user:'useName',pwd:'111111',roles:[readWrite,dbAdmin]});    第一个参数用户的名字    第二个参数</div> </li> <li><a href="/article/2222.htm" title="[游戏与生活]玩暗黑破坏神3的一些问题" target="_blank">[游戏与生活]玩暗黑破坏神3的一些问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a> <div>    暗黑破坏神3是有史以来最让人激动的游戏。。。。但是有几个问题需要我们注意      玩这个游戏的时间,每天不要超过一个小时,且每次玩游戏最好在白天      结束游戏之后,最好在太阳下面来晒一下身上的暗黑气息,让自己恢复人的生气   &nb</div> </li> <li><a href="/article/2349.htm" title="java 二维数组如何存入数据库" target="_blank">java 二维数组如何存入数据库</a> <span class="text-muted">cuiyadll</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>using System; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.Serialization; using System.IO; namespace WindowsFormsApplication1 { </div> </li> <li><a href="/article/2476.htm" title="本地事务和全局事务Local Transaction and Global Transaction(JTA)" target="_blank">本地事务和全局事务Local Transaction and Global Transaction(JTA)</a> <span class="text-muted">darrenzhu</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/local/1.htm">local</a><a class="tag" taget="_blank" href="/search/global/1.htm">global</a><a class="tag" taget="_blank" href="/search/transaction/1.htm">transaction</a> <div>Configuring Spring and JTA without full Java EE http://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/ Spring doc -Transaction Management http://docs.spring.io/spri</div> </li> <li><a href="/article/2603.htm" title="Linux命令之alias - 设置命令的别名,让 Linux 命令更简练" target="_blank">Linux命令之alias - 设置命令的别名,让 Linux 命令更简练</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/alias/1.htm">alias</a> <div>用途说明 设置命令的别名。在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名。虽然可以为命令建立“链接”解决长文件名的问 题,但对于带命令行参数的命令,链接就无能为力了。而指定别名则可以解决此类所有问题【1】。常用别名来简化ssh登录【见示例三】,使长命令变短,使常 用的长命令行变短,强制执行命令时询问等。   常用参数 格式:alias 格式:ali</div> </li> <li><a href="/article/2730.htm" title="yii2 restful web服务[格式响应]" target="_blank">yii2 restful web服务[格式响应]</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a> <div>响应格式 当处理一个 RESTful API 请求时, 一个应用程序通常需要如下步骤 来处理响应格式: 确定可能影响响应格式的各种因素, 例如媒介类型, 语言, 版本, 等等。 这个过程也被称为 content negotiation。 资源对象转换为数组, 如在 Resources 部分中所描述的。 通过 [[yii\rest\Serializer]]</div> </li> <li><a href="/article/2857.htm" title="MongoDB索引调优(2)——[十]" target="_blank">MongoDB索引调优(2)——[十]</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/MongoDB%E7%B4%A2%E5%BC%95%E4%BC%98%E5%8C%96/1.htm">MongoDB索引优化</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2178555 一、概述       上一篇文档中也说明了,MongoDB的索引几乎与关系型数据库的索引一模一样,优化关系型数据库的技巧通用适合MongoDB,所有这里只讲MongoDB需要注意的地方 二、索引内嵌文档     可以在嵌套文档的键上建立索引,方式与正常</div> </li> <li><a href="/article/2984.htm" title="当滑动到顶部和底部时,实现Item的分离效果的ListView" target="_blank">当滑动到顶部和底部时,实现Item的分离效果的ListView</a> <span class="text-muted">gundumw100</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>拉动ListView,Item之间的间距会变大,释放后恢复原样; package cn.tangdada.tangbang.widget; import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import andr</div> </li> <li><a href="/article/3111.htm" title="程序员用HTML5制作的爱心树表白动画" target="_blank">程序员用HTML5制作的爱心树表白动画</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>体验效果:http://keleyi.com/keleyi/phtml/html5/31.htmHTML代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="UTF-8" > <ti</div> </li> <li><a href="/article/3238.htm" title="预装windows 8 系统GPT模式的ThinkPad T440改装64位 windows 7旗舰版" target="_blank">预装windows 8 系统GPT模式的ThinkPad T440改装64位 windows 7旗舰版</a> <span class="text-muted">kakajw</span> <a class="tag" taget="_blank" href="/search/ThinkPad/1.htm">ThinkPad</a><a class="tag" taget="_blank" href="/search/%E9%A2%84%E8%A3%85/1.htm">预装</a><a class="tag" taget="_blank" href="/search/%E6%94%B9%E8%A3%85/1.htm">改装</a><a class="tag" taget="_blank" href="/search/windows+7/1.htm">windows 7</a><a class="tag" taget="_blank" href="/search/windows+8/1.htm">windows 8</a> <div>  该教程具有普遍参考性,特别适用于联想的机器,其他品牌机器的处理过程也大同小异。 该教程是个人多次尝试和总结的结果,实用性强,推荐给需要的人!   缘由 小弟最近入手笔记本ThinkPad T440,但是特别不能习惯笔记本出厂预装的Windows 8系统,而且厂商自作聪明地预装了一堆没用的应用软件,消耗不少的系统资源(本本的内存为4G,系统启动完成时,物理内存占用比</div> </li> <li><a href="/article/3365.htm" title="Nginx学习笔记" target="_blank">Nginx学习笔记</a> <span class="text-muted">mcj8089</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>一、安装nginx             1、在nginx官方网站下载一个包,下载地址是:  http://nginx.org/download/nginx-1.4.2.tar.gz      2、WinSCP(ftp上传工</div> </li> <li><a href="/article/3492.htm" title="mongodb 聚合查询每天论坛链接点击次数" target="_blank">mongodb 聚合查询每天论坛链接点击次数</a> <span class="text-muted">qiaolevip</span> <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a> <div>/* 18 */ { "_id" : ObjectId("5596414cbe4d73a327e50274"), "msgType" : "text", "sendTime" : ISODate("2015-07-03T08:01:16.000Z"</div> </li> <li><a href="/article/3619.htm" title="java术语(PO/POJO/VO/BO/DAO/DTO)" target="_blank">java术语(PO/POJO/VO/BO/DAO/DTO)</a> <span class="text-muted">Luob.</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/DTO/1.htm">DTO</a><a class="tag" taget="_blank" href="/search/po/1.htm">po</a><a class="tag" taget="_blank" href="/search/VO+BO/1.htm">VO BO</a> <div> PO(persistant object) 持久对象 在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操作. VO(value object) 值对象 通</div> </li> <li><a href="/article/3746.htm" title="算法复杂度" target="_blank">算法复杂度</a> <span class="text-muted">Wuaner</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a> <div>Time Complexity & Big-O: http://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o http://bigocheatsheet.com/ http://www.sitepoint.com/time-complexity-algorithms/ </div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>