quartusii介绍如何将自定义的模块引用到别的项目

quartusii几个模块怎么调用仿真_百度知道
quartusii几个模块怎么调用仿真
Quartus 中调用modelsim的流程1. 设定仿真工具 assignmentèsettingèEDA tool settingèsimulation 选择你需要的工具。 clip_image0012. 自动产生测试激励文件模板: processingèstartèStart test bench template writer clip_image003我们点击之后系统会自动在目录:当前文件夹è simulation è modelsim (这个文件夹名字跟你选的仿真工具有关) 中产生一个测试激励文件 xxx.vt(Verilog test bench) 或者 xxx.vht(VHDL test bench), 文件名跟你工程中的Top module 的名字一样, 后缀为.vt或者.vht。 clip_image0043. 编辑走动生成的test bench文件 我们加入自己需要的激励以及初始化语句,这里我们还要修改test bench的模块名字为tb(我们会看到这个名字和后面的设定有联系)。 clip_image0054. 连接test bench,我们需要从Quartus中自动调用仿真工具,所以需要设定Native Link选项。a) 还是在simulation的设置页面里,设定 Native Link对话框中的设定。我们这里因为需要工具自动调用激励所以选中 clip_image007b) 点击右边的Test Benches, 我们需要在这里设定一个相关联的test bench. clip_image009这里会弹出一个让你指定test bench的对话框,因为我们之前没有指定任何的test bench,所以这里是空白的。c) 指定test bench 因为我们是第一次产生test bench,点击new. clip_image011点击New之后会产生一个New Test bench setting的对话框,在这里你将test bench和你的相应的test bench file进行绑定。 clip_image013我们这里在Test bench name的对话框中输入一个名字”my_1st_tb”, 我们将看到,在下面的Top level module in test bench对话框中也自动显示”my_1st_tb”. 注意这个名字应该和你的test bench 中的module name一直,我们之前在第3步的时候将test bench的module name已经改成了tb,所以我们这里应该把对话框中的名字改成tb。 clip_image014d) 加入test bench文件 clip_image0165. 进行仿真 当这些设定都完成了之后, 选择菜单 toolèRun EDA Simulation toolèEDA RTL simulation clip_image017就可以直接调用modelsim进行仿真。6. 小技巧: 我们这样调用仿真,如果是Modelsim AE每次不会编译lib文件,但如果我们使用的是Modelsim SE版本,每次调用都需要重新编译库,非常不爽,在这里我们建议自己修改脚本文件,进行仿真.a) 当我们按照之前的描述,运行完仿真之后,停留在Modelsim的界面。b) 在Modelsim界面的命令行上,我们点向上的方向键,就会出现我们上一条指令, 我们可以看到是 do xxxx.do 这说明工具执行的上一个命令式 xxxx.do这个脚本文件,我们这里的例子是 do oversampling_core_run_msim_rtl_verilog.do clip_image019i. 我们知道了工具执行的脚本,我们就可以按照自己的想法去改变这个脚本了。使用 edit oversampling_core_run_msim_rtl_verilog.do命令,可以看到这个脚本的内容(当然我们也可以使用Ultra Edit或者VIM等文本编辑软件去打开这个脚本文件)。这个脚本通常分成3部分 库文件编译部分,设计文件编译,运行参数设定和开始执行部分 clip_image021ii. 通常来说库文件只在第一次编译的时候,需要编译,后面我们只需要在仿真的时候指定库文件的位置就好了,不需要每次都编译。因此我们可以注释掉“库文件编译部分”。下面图中红色框中的部分就是被注释掉的库编译部分,这样会节省我们的仿真时间,注意在脚本语言中#是注释符。 clip_image023iii. 我们将编辑过的脚本文件另存为sim.do, 在以后的仿真中我们可以在Modelsim命令行中,直接在脚本中运行do sim.do(当然是先需要将Modelsim的工作目录改到 工程所在文件夹/simulation/modelsim/)。c) 另外脚本生成的波形文件通常是将test bench的顶层加入到图形画面中我们可以看到在脚本的第3部分(运行参数和开始执行)部分,默认命令式 add wave *, 这条命令就是讲 test bench顶层的所有信好加入到wave窗口中。 clip_image024对我们来说,在调试阶段,有很多底层信号都是想观测的,所以需要再手动修改一下命令i. 在modelsim的窗口中,选中自己想要关心的模块,右键可以将自己关心的信号加入wave波形中 clip_image026clip_image028ii. 此时我们在wave 窗口中可以将这个波形的格式存下来,在wave窗口中点菜单fileèsave… 选择文件名为wave.do. clip_image030iii. 在我们执行的脚本中将add wave *,这个命令替换成do wave .do, 就可以在每次执行仿真的时候自动添加想要观测的波形了。 clip_image024[1] clip_image0317. 接下来最后一个问题,怎样才能一次性的编译好库文件,让软件不再每次编译。其实altera已经为客户准备了相应的选项,只不过藏得比较深,不好找。a) 一次性编译库:i. 点击toolè launch EDA simulation Library Compiler clip_image033ii. 我们会看到一个让我们选择器件的页面。根据你的实际情况选择下面的设定。点击start compile,软件会自动帮你完成编译,然后关掉就好,至此你应该已经完成了库的编译。 clip_image035iii. 接下来我们需要在QII的仿真设定页面做一些修改。 我们需要回到设定界面 Assignmentèsettingèsimulationèmore Nativelink setting clip_image037设定好相应的路径。 clip_image039好了,重新run仿真,就发现不会再编译我们的库文件了。
其他类似问题
为您推荐:
quartusii的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 2461|回复: 11
求助:自定义的内容如何放到宝贝详情的上面?
TA的每日心情抱抱 15:02签到天数: 1 天连续签到: 1 天[LV.1]初学乍练主题帖子积分
阅读权限: 20
注册会员, 积分 1996, 距离下一级还需 8004 积分
注册会员, 积分 1996, 距离下一级还需 8004 积分
自定义的内容如何放到宝贝详情的上面? 为什么我总是放不到上面去呢,我看有的店铺就可以啊
淘宝美工论坛-汇聚淘宝美工高端人才,建设淘宝美工人才基地。请认准论坛唯一网址:
TA的每日心情不爽昨天&15:44签到天数: 785 天连续签到: 1 天[LV.10]功行圆满主题帖子积分
阅读权限: 50
高级会员, 积分 138993, 距离下一级还需 361007 积分
高级会员, 积分 138993, 距离下一级还需 361007 积分
用表格做框架,然后放入详情页
在兴趣的指引下,学习会很有乐趣!
TA的每日心情思考昨天&11:26签到天数: 1106 天连续签到: 1 天[LV.10]功行圆满主题帖子积分
阅读权限: 100
黄皮很酸吗? 糖糖很甜吗? 亲 我一下犯法吗?
楼上方法可解
&&&&&&挖掘淘宝Bug与代应用:&&&&&&
TA的每日心情烦 09:24签到天数: 415 天连续签到: 1 天[LV.9]已臻大成主题帖子积分
阅读权限: 50
高级会员, 积分 101077, 距离下一级还需 398923 积分
高级会员, 积分 101077, 距离下一级还需 398923 积分
反正我家的自定义模块能丢前面
TA的每日心情大哭 11:46签到天数: 582 天连续签到: 1 天[LV.9]已臻大成主题帖子积分
阅读权限: 100
我家自定义也能丢前面!
但愿每次回忆,对生活都不感到负疚.-------雷锋
TA的每日心情无奈 15:15签到天数: 581 天连续签到: 1 天[LV.9]已臻大成主题帖子积分
阅读权限: 50
高级会员, 积分 142936, 距离下一级还需 357064 积分
高级会员, 积分 142936, 距离下一级还需 357064 积分
用坑爹的淘宝助理也可以···操作方法蛋疼不想懂····
淘宝美工论坛-汇聚淘宝美工高端人才,建设淘宝美工人才基地。请认准论坛唯一网址:
TA的每日心情臭美 16:25签到天数: 76 天连续签到: 1 天[LV.6]渐入佳境主题帖子积分
阅读权限: 30
中级会员, 积分 14313, 距离下一级还需 85687 积分
中级会员, 积分 14313, 距离下一级还需 85687 积分
每个详情页面都显示要么只有买装修市场的模板或者天猫版的就可以C店是放不上的只有放在下面
淘宝美工论坛-汇聚淘宝美工高端人才,建设淘宝美工人才基地。请认准论坛唯一网址:
TA的每日心情抱抱 11:53签到天数: 160 天连续签到: 1 天[LV.7]炉火纯青主题帖子积分
阅读权限: 30
中级会员, 积分 23159, 距离下一级还需 76841 积分
中级会员, 积分 23159, 距离下一级还需 76841 积分
一个字:钱
淘宝美工论坛-汇聚淘宝美工高端人才,建设淘宝美工人才基地。请认准论坛唯一网址:
TA的每日心情烦 15:05签到天数: 5 天连续签到: 1 天[LV.2]登堂入室主题帖子积分
阅读权限: 20
注册会员, 积分 1727, 距离下一级还需 8273 积分
注册会员, 积分 1727, 距离下一级还需 8273 积分
没太懂!放属性那里下面是可以的,再往上木有看到过!
淘宝美工论坛-汇聚淘宝美工高端人才,建设淘宝美工人才基地。请认准论坛唯一网址:
TA的每日心情臭美 16:35签到天数: 38 天连续签到: 1 天[LV.5]略有小成主题帖子积分
阅读权限: 20
注册会员, 积分 9064, 距离下一级还需 936 积分
注册会员, 积分 9064, 距离下一级还需 936 积分
淘宝自己怎么大公司,为什么他家自己后台好坑
沧海一声笑,下一句是什么 [img]/static/image/smiley/comcom
注册账号后积极发帖的会员
经常帮助其他会员答疑
积极宣传本站,为本站带来更多的用户访问量
积极宣传本站,为本站带来更多注册会员
经常参与各类话题的讨论,发帖内容较有主见,在线时间达到720小时(30天)
活跃且尽责职守的版主
任职天猫商城美工! 注意:申请此勋章,需先通过淘宝美工认证!
淘宝钻级店美工
任职淘宝钻级店铺美工!注意:申请此勋章,需先通过淘宝美工认证!
Powered by查看: 2080|回复: 9
门户模块管理中的自定义模块怎么正确引用JS?
&div class=&itemlist&&
[loop]&div class=&item&&
&div class=&inner&&
&&&div class=&img&&&a href=&{url}&{target}&&img src=&{pic}& alt=&{title}& /&&/a&&/div&
&&&div class=&info&&
& &&div class=&subject&&{title}&/div&
& &&a href=&home.php?mod=space&uid={authorid}&{target} class=&avatar&&&img src=&{avatar}& width=&48& height=&48& alt=&{author}& /&&/a&
& &&div class=&avatar_info&&
& &&&&a href=&home.php?mod=space&uid={authorid}&{target}&{author}&/a&
& &&&&p&浏览:{views} | 回复:{replies}&/p&
&/div&&/div&[/loop]
[order=4]&div class=&item&&
&div class=&inner&&
&&&div class=&img&&&a href=&{url}&{target}&&img src=&{pic}& alt=&{title}& /&&/a&&/div&
&&&div class=&info&&
& &&div class=&subject&&{title}&/div&
& &&a href=&home.php?mod=space&uid={authorid}&{target} class=&avatar&&&img src=&{avatar}& width=&48& height=&48& alt=&{author}& /&&/a&
& &&div class=&avatar_info&&
& &&&&a href=&home.php?mod=space&uid={authorid}&{target}&{author}&/a&
& &&&&p&浏览:{views} | 回复:{replies}&/p&
&/div&&/div&&/div&[/order]
[order=5]&div class=&itemlist&&
&div class=&item&&
&div class=&inner&&
&&&div class=&img&&&a href=&{url}&{target}&&img src=&{pic}& alt=&{title}& /&&/a&&/div&
&&&div class=&info&&
& &&div class=&subject&&{title}&/div&
& &&a href=&home.php?mod=space&uid={authorid}&{target} class=&avatar&&&img src=&{avatar}& width=&48& height=&48& alt=&{author}& /&&/a&
& &&div class=&avatar_info&&
& &&&&a href=&home.php?mod=space&uid={authorid}&{target}&{author}&/a&
& &&&&p&浏览:{views} | 回复:{replies}&/p&
&/div&&/div&[/order]
[order=8]&div class=&item&&
&div class=&inner&&
&&&div class=&img&&&a href=&{url}&{target}&&img src=&{pic}& alt=&{title}& /&&/a&&/div&
&&&div class=&info&&
& &&div class=&subject&&{title}&/div&
& &&a href=&home.php?mod=space&uid={authorid}&{target} class=&avatar&&&img src=&{avatar}& width=&48& height=&48& alt=&{author}& /&&/a&
& &&div class=&avatar_info&&
& &&&&a href=&home.php?mod=space&uid={authorid}&{target}&{author}&/a&
& &&&&p&浏览:{views} | 回复:{replies}&/p&
&/div&&/div&&/div&[/order]
[order=9]&div class=&itemlist&&
&div class=&item&&
&div class=&inner&&
&&&div class=&img&&&a href=&{url}&{target}&&img src=&{pic}& alt=&{title}& /&&/a&&/div&
&&&div class=&info&&
& &&div class=&subject&&{title}&/div&
& &&a href=&home.php?mod=space&uid={authorid}&{target} class=&avatar&&&img src=&{avatar}& width=&48& height=&48& alt=&{author}& /&&/a&
& &&div class=&avatar_info&&
& &&&&a href=&home.php?mod=space&uid={authorid}&{target}&{author}&/a&
& &&&&p&浏览:{views} | 回复:{replies}&/p&
&/div&&/div&[/order]
[order=12]&div class=&item&&
&div class=&inner&&
&&&div class=&img&&&a href=&{url}&{target}&&img src=&{pic}& alt=&{title}& /&&/a&&/div&
&&&div class=&info&&
& &&div class=&subject&&{title}&/div&
& &&a href=&home.php?mod=space&uid={authorid}&{target} class=&avatar&&&img src=&{avatar}& width=&48& height=&48& alt=&{author}& /&&/a&
& &&div class=&avatar_info&&
& &&&&a href=&home.php?mod=space&uid={authorid}&{target}&{author}&/a&
& &&&&p&浏览:{views} | 回复:{replies}&/p&
&/div&&/div&&/div&[/order]
[order=13]&div class=&itemlist&&
&div class=&item&&
&div class=&inner&&
&&&div class=&img&&&a href=&{url}&{target}&&img src=&{pic}& alt=&{title}& /&&/a&&/div&
&&&div class=&info&&
& &&div class=&subject&&{title}&/div&
& &&a href=&home.php?mod=space&uid={authorid}&{target} class=&avatar&&&img src=&{avatar}& width=&48& height=&48& alt=&{author}& /&&/a&
& &&div class=&avatar_info&&
& &&&&a href=&home.php?mod=space&uid={authorid}&{target}&{author}&/a&
& &&&&p&浏览:{views} | 回复:{replies}&/p&
&/div&&/div&[/order]
以下内容是自定义模块中的数据,是四列图片,我想让它实现类似堆糖的JS向下滚动效果.
然后引用了JS
&script src=&comiis_kmx3qxls/img/js/lrtk.js& type=text/javascript&&/script&
&script src=&comiis_kmx3qxls/img/js/jquery.js& type=text/javascript&&/script&
这个代码我是直接放在模块里,也就是上面部分最上面,不知道对不对
但是一直没效果,不知道是什么原因,我的JS放的位置是D:\DedeAMPZ\WebRoot\Default\template\comiis_kmx3qxls\img\js
我是在本机测试的.求解答!!!!
这个没人知道么?
相对你网站根目录的路径
相对你网站根目录的路径
能具体说说么? 我的根目录是D:\DedeAMPZ\WebRoot\Default\template
模板路径是D:\DedeAMPZ\WebRoot\Default\template\comiis_kmx3qxls
&script src=&网址comiis_kmx3qxls/img/js/lrtk.js& type=text/javascript&&/script&
&script src=&网址comiis_kmx3qxls/img/js/jquery.js& type=text/javascript&&/script&复制代码要确定网址comiis_kmx3qxls/img/js/lrtk.js复制代码可以在浏览器里能打开
要确定可以在浏览器里能打开
&script type=text/javascript src=&template/comiis_kmx3qxls/img/js/jquery.js&&&/script&
&script type=text/javascript src=&template/comiis_kmx3qxls/img/js/lrtk.js&&&/script&
这回的代码是可以在浏览器中输入,然后提示下载的
这样的我直接放在模块里就可以么?
我一放进去.DIY就没办法进入高级模式了..
这个可能是什么原因啊? 调不成功么
请问是jquery和Prototype 的问题么?
jquery一向和DZ的不兼容
哎,谢谢了,
我把JS放到HEAD里面,结果在源代码里都找不到..根本没有引用.. 愁了.谢谢
Powered by1.模块简介
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用python标准库的方法。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个&.py&文件组成的代码集合就称为模块。
2.模块的引入
在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import&math来引入。在调用math模块中的函数时,必须这样引用:
模块名.函数名
import math
import sys
有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以通过语句
 from&模块名&import&函数名1,函数名2....
import module
from module.xx.xx import xx
from module.xx.xx import xx as rename&
from module.xx.xx import *
模块分为三种:
自定义模块
3.模块的安装
(1)yum install 模块名
(2)apt-get
(3)pip安装 参考使用(
(4)源码安装
需要编译环境:yum install python-devel gcc
下载源码包:wget http:
解压:tar -xvf xxx.tar
进入:cd xxx
编译:python setup.py build
安装:python setup.py install
二、自定义模块
1.在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。
写一个模块(模块文件要和代码文件在同一目录下)
#vim moudle_test.py
#写入如下代码
#!/usr/bin/env python3
print ('自定义 moudle')
#vim test.py
#!/usr/bin/env python3
#导入自定义模块
import moudle_test
#执行test.py
2.模块文件为单独文件夹 ,文件夹和代码在同一目录下
导入模块其实就是告诉Python解释器去解释那个py文件
导入一个py文件,解释器解释该py文件
导入一个包,解释器解释该包下的&__init__.py&文件
3.sys.path添加目录
如果sys.path路径列表没有你想要的路径,可以通过&sys.path.append('路径')&添加。通过os模块可以获取各种目录,例如:
三、内置模块
1.os模块 提供系统级别的操作
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
&&& os.getcwd()
os.chdir("目录名")
改变当前脚本工作目录;相当于linux下cd命令
&&& os.chdir('/usr/local')
&&& os.getcwd()
'/usr/local'
os.curdir 返回当前目录: ('.')
&&& os.curdir
获取当前目录的父目录字符串名:('..')
&&& os.pardir
os.makedirs('目录1/目录2') 可生成多层递归目录(相当于linux下mkdir -p)
&&& os.makedirs('/python/moudle/')
# ll /python/moudle/
os.removedirs('目录') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
&&& os.removedirs('/python/moudle')
#a目录中除了有一个b目录外,再没有其它的目录和文件。
#b目录中必须是一个空目录。 如果想实现类似rm -rf的功能可以使用shutil模块
os.mkdir('目录')
生成单级目录;相当于shell中mkdir 目录
&&& os.mkdir('/python')
os.rmdir('目录')
删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir
&&& os.rmdir('/python')
&&& os.rmdir('/python')
Traceback (most recent call last):
&&File "&stdin&", line 1, in &module&
FileNotFoundError: [Errno 2] No such file or directory: '/python'
os.listdir('目录') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
&&& os.listdir('/root')
['.Xauthority', 'yaoyao@192.168.42.51', '.py.swp', '.ssh', 'in.sh', '1', 'IPy-0.81.tar.gz', 'Dockerssh', 'id_rsa.pub', 'psutil-2.0.0.tar.gz', '.python_history', '.bashrc', 'ansible', '.bash_history', '.vim', 'IPy-0.81', '.pip', '.profile', '.ansible', 'python', '.dockercfg', 'Docker', 'util-linux-2.27', '.viminfo', 'util-linux-2.27.tar.gz', 'ubuntu_14.04.tar', '__pycache__', 'psutil-2.0.0', 'xx.py', 'ip.py', 'DockerNginx', '.cache', 'dict_shop.py']
os.remove()删除一个文件
&&& os.remove('/root/xx.py')
os.rename("原名","新名")
重命名文件/目录
&&& os.listdir('/python')
['oldtouch']
&&& os.rename('oldtouch','newtouch')
&&& os.listdir('/python')
['newtouch']
os.stat('path/filename')
获取文件/目录信息
&&& os.stat('newtouch')
os.stat_result(st_mode=33188, st_ino=1048593, st_dev=51713, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=, st_mtime=, st_ctime=)
输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
&&& os.sep
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
&&& os.linesep
os.pathsep
输出用于分割文件路径的字符串
&&& os.pathsep
输出字符串指示当前使用平台。win-&'nt'; Linux-&'posix'
&&& os.name
os.system("pwd")
运行shell命令,直接显示
&&& os.system('pwd')
os.environ
&&& os.environ
environ({'_': '/usr/bin/python3', 'SSH_CONNECTION': 省略n个字符
os模块其他语法:
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所指向的文件或者目录的最后修改时间
2、sys模块 用于提供对解释器相关的操作
sys.argv&& 命令行参数List,第一个元素是程序本身路径
sys.modules 返回系统导入的模块字段,key是模块名,value是模块
sys.exit(n)&&&&&&& 退出程序,正常退出时exit(0)
sys.version&&&&&&& 获取Python解释程序的版本信息
sys.maxint&&&&&&&& 最大的Int值
sys.path&&&&&&&&&& 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform&&&&&& 返回操作系统平台名称
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]
sys.modules.keys() 返回所有已经导入的模块名
sys.modules.values() 返回所有已经导入的模块
sys.exc_info()&&&& 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息
sys.exit(n)&&&&&&& 退出程序,正常退出时exit(0)
sys.hexversion&&&& 获取Python解释程序的版本值,16进制格式如:0x
sys.version&&&&&&& 获取Python解释程序的
sys.api_version&&& 解释器的C的API版本
sys.version_info
&final&表示最终,也有&candidate&表示候选,serial表示版本级别,是否有后继的发行
sys.displayhook(value)&&&&& 如果value非空,这个函数会把他输出到sys.stdout,并且将他保存进__builtin__._.指在python的交互式解释器里,&_& 代表上次你输入得到的结果,hook是钩子的意思,将上次的结果钩过来
sys.getdefaultencoding()&&& 返回当前你所用的默认的字符编码格式
sys.getfilesystemencoding() 返回将Unicode文件名转换成系统文件名的编码的名字
sys.setdefaultencoding(name)用来设置当前默认的字符编码,如果name和任何一个可用的编码都不匹配,抛出 LookupError,这个函数只会被site模块的sitecustomize使用,一旦别site模块使用了,他会从sys模块移除
sys.builtin_module_names&&& Python解释器导入的模块列表
sys.executable&&&&&&&&&&&&& Python解释程序路径
sys.getwindowsversion()&&&& 获取Windows的版本
sys.copyright&&&&& 记录python版权相关的东西
sys.byteorder&&&&& 本地字节规则的指示器,big-endian平台的值是&big&,little-endian平台的值是&little&
sys.exc_clear()&&& 用来清除当前线程所出现的当前的或最近的错误信息
sys.exec_prefix&&& 返回平台独立的python文件安装的位置
sys.stderr&&&&&&&& 错误输出
sys.stdin&&&&&&&&& 标准输入
sys.stdout&&&&&&&& 标准输出
sys.platform&&&&&& 返回操作系统平台名称
sys.path&&&&&&&&&& 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.maxunicode&&&& 最大的Unicode值
sys.maxint&&&&&&&& 最大的Int值
sys.version&&&&&&& 获取Python解释程序的版本信息
sys.hexversion&&&& 获取Python解释程序的版本值,16进制格式如:0x
3.hashlib模块&
&&& import hashlib
&&& hash = hashlib.md5()
&&& hash.update('liuyao199539'.encode('utf-8'))
&&& hash.hexdigest()
'69ce9b5f54ba01b6dfbb5c'
1.首先从python直接导入hashlib模块
2.调用hashlib里的md5()生成一个md5&hash对象
3.生成hash对象后,就可以用update方法对字符串进行md5加密的更新处理
4.继续调用update方法会在前面加密的基础上更新加密
5.在3.x几的版本上update里面需要加.encode('utf-8'),而2.x的版本不需要
2)sha1算法
&&& import hashlib
&&& sha_1 = hashlib.sha1()
&&& sha_1.update('liuyao'.encode('utf-8'))
&&& sha_1.hexdigest()
'dd34a806b733f6d02244f39bcc1af87819fcaa82'
3)sha256算法
&&& import hashlib
&&& sha_256 = hashlib.sha256()
&&& sha_256.update('liuyao'.encode('utf-8'))
&&& sha_256.hexdigest()
'5ad988b8fabb867207eac4a1fcf56ffd93f2cc7cfab038'
4)sha384算法
&&& import hashlib
&&& sha_384 = hashlib.sha384()
&&& sha_384.update('liuyao'.encode('utf-8'))
&&& sha_384.hexdigest()
'03ca6dcd5ff3227d8ebce4eebb85de716f37b38bd9ca3922520efc67db8efa34eba09bddba3'
5)sha512算法
&&& import hashlib
&&& sha_512 = hashlib.sha512()
&&& sha_512.update('liuyao'.encode('utf-8'))
&&& sha_512.hexdigest()
'65cac3aa59294d27bfc09d9eecbfdd2d0e438a1c996b2bc5b0a2a2f41e3ea950c4c4952b'
6)对加密算法中添加自定义key再来做加密,防止被撞库破解
&&& md5_key = hashlib.md5('jwhfjsdjbwehjfgb'.encode('utf--8'))
&&& md5_key.update('liuyao'.encode('utf-8'))
&&& md5_key.hexdigest()
'609b558ec8d8e795deec3a94f578b020'
注:&hmac&模块,它内部对我们创建&key&和&内容&再进行处理然后再加密
import hmac
hm = hmac.new('liuyao'.encode('utf-8'))
hm.update('hellowo'.encode('utf-8'))
print (hm.hexdigest())
4.configparser模块(在2.x版本为:ConfigParser)
用于对特定的配置文件进行操作
配置文件的格式是:&[]包含的叫section,&&&&section&下有option=value这样的键值
读取配置方法
-read(filename) 直接读取ini文件内容
-sections() 得到所有的section,并以列表的形式返回
-options(section) 得到该section的所有option
-items(section) 得到该section的所有键值对
-get(section,option) 得到section中option的值,返回为string类型
-getint(section,option) 得到section中option的值,返回为int类型
写入配置方法
-add_section(section) 添加一个新的section
-set( section, option, value) 对section中的option进行设置
需要调用write将内容写入配置文件。
测试配置文件:
[liuyao]passwd = 123456card = 8888888limit = 150000debt = 0interest = 0.5[mayun]passwd = 234567card = 1111111limit = 150000debt = 0interest = 0.5[donghang]passwd = 234567card = 0000000limit = 150000debt = 0interest = 0.5
#!/usr/bin/env&pythonimport&configparser#生成config对象config =&configparser.ConfigParser()#用config对象读取配置文件config.read('test_con')#以列表形式返回所有的sectionsections =&config.sections()print&('sections',sections)#得到指定section的所有optionoptions =&config.options("liuyao")print&('options',options)#得到指定section的所有键值对kvs =&config.items("liuyao")print&('kvs',kvs)#指定section,option读取值str_val =&config.get("liuyao", "card")int_val =&config.getint("liuyao", "limit")print&('liuyao&的&card',str_val)print&('liuyao&的&limit',int_val)#修改写入配置文件#更新指定section,option的值config.set("mayun", "limit", "110000")int_val =&config.getint("mayun", "limit")print&('mayun&的&limit',int_val)#写入指定section增加新option和值config.set("liuyao", "age", "21")int_val =&config.getint("liuyao", "age")print&('liuyao&的&age',int_val)#增加新的sectionconfig.add_section('duobian')config.set('duobian', 'age', '21')#写回配置文件config.write(open("test_con",'w')
输出结果:
sections ['liuyao', 'mayun', 'donghang', 'aoteman']
options ['passwd', 'card', 'limit', 'debt', 'interest', 'age']
kvs [('passwd', '123456'), ('card', '8888888'), ('limit', '150000'), ('debt', '0'), ('interest', '0.5'), ('age', '21')]
liuyao 的 card 8888888
liuyao 的 limit 150000
mayun 的 limit 110000
liuyao 的 age 21
配置文件:
5.Subprocess模块
subprocess最早是在2.4版本中引入的。subprocess模块用来生成子进程,并可以通过管道连接它们的输入/输出/错误,以及获得它们的返回值。它用来代替多个旧模块和函数:os.systemos.spawn*os.popen*popen2.*commands.*
运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。另外subprocess还提供了一些管理标准流(standard&stream)和管道(pipe)的工具,从而在进程间使用文本通信。
执行命令,返回状态码 shell&=&True&,允许&shell&命令是字符串形式
&&& import subprocess
&&& ret = subprocess.call(['ls','-l'],shell=False)
total 201056
-rw-r--r--& 1 root& root&&&&&&&& 22 Jan 15 11:55 1
drwxr-xr-x& 5 root& root&&&&&& 4096 Jan& 8 16:33 ansible
-rw-r--r--& 1 root& root&&&&&& 6830 Jan 15 09:41 dict_shop.py
drwxr-xr-x& 4 root& root&&&&&& 4096 Jan 13 16:05 Docker
drwxr-xr-x& 2 root& root&&&&&& 4096 Dec 22 14:53 DockerNginx
drwxr-xr-x& 2 root& root&&&&&& 4096 Jan 21 17:30 Dockerssh
-rw-r--r--& 1 root& root&&&&&&& 396 Dec 25 17:30 id_rsa.pub
2)check_call
执行命令,如果执行状态码是&0&,则返回0,否则抛异常
&&& subprocess.check_call(["ls", "-l"])
total 201056
-rw-r--r--& 1 root& root&&&&&&&& 22 Jan 15 11:55 1
drwxr-xr-x& 5 root& root&&&&&& 4096 Jan& 8 16:33 ansible
-rw-r--r--& 1 root& root&&&&&& 6830 Jan 15 09:41 dict_shop.py
&&& subprocess.check_call("exit 1", shell=True)
Traceback (most recent call last):
&&File "&stdin&", line 1, in &module&
3.check_output
执行命令,如果状态码是&0&,则返回执行结果,否则抛异常
subprocess.check_output(["echo",&"Hello&World!"])
subprocess.check_output("exit&1",&shell=True)
4.subprocess.Popen(...)
用于执行复杂的系统命令
args:shell命令,可以是字符串或者序列类型(如:list,元组)
bufsize:指定缓冲。0&无缓冲,1&行缓冲,其他&缓冲区大小,负值&系统缓冲
stdin,&stdout,&stderr:分别表示程序的标准输入、输出、错误句柄
preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable&object),它将在子进程运行之前被调用
close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin,&stdout,&stderr)。
shell:同上
cwd:用于设置子进程的当前目录
env:用于指定子进程的环境变量。如果env&=&None,子进程的环境变量将从父进程中继承。
universal_newlines:不同系统的换行符不同,True&-&&同意使用&\n
startupinfo与createionflags只在windows下有效将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
import subprocess
res = subprocess.Popen(["mkdir","sub"])
res2 = subprocess.Popen("mkdir sub_1", shell=True)
终端输入的命令分为两种:
输入即可得到输出,如:ifconfig
输入进行某环境,依赖再输入,如:python
&&& obj = subprocess.Popen("mkdir cwd", shell=True, cwd='/home/',)
import subprocess
obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
obj.stdin.write('print 1 \n ')
obj.stdin.write('print 2 \n ')
obj.stdin.write('print 3 \n ')
obj.stdin.write('print 4 \n ')
obj.stdin.close()
cmd_out = obj.stdout.read()
obj.stdout.close()
cmd_error = obj.stderr.read()
obj.stderr.close()
print cmd_out
print cmd_error
import subprocess
obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
obj.stdin.write('print 1 \n ')
obj.stdin.write('print 2 \n ')
obj.stdin.write('print 3 \n ')
obj.stdin.write('print 4 \n ')
out_error_list = municate()
print out_error_list
import subprocess
obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out_error_list = municate('print "hello"')
print out_error_list
7.时间模块
1)time模块
time.time()函数返回从日以来的秒数,这是一个浮点数
&&& import time
&&& time.time()
print(time.clock()) #返回处理器时间,3.3开始已废弃
print(time.process_time()) #返回处理器时间,3.3开始已废弃
print(time.time()) #返回当前系统时间戳
print(time.ctime()) #输出Tue Jan 26 18:23:48 2016 ,当前系统时间
print(time.ctime(time.time()-86640)) #将时间戳转为字符串格式
print(time.gmtime(time.time()-86640)) #将时间戳转换成struct_time格式
print(time.localtime(time.time()-86640)) #将时间戳转换成struct_time格式,但返回 的本地时间
print(time.mktime(time.localtime())) #与time.localtime()功能相反,将struct_time格式转回成时间戳格式
#time.sleep(4) #sleep
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将struct_time格式转成指定的字符串格式
print(time.strptime("","%Y-%m-%d") ) #将字符串格式转换成struct_time格式
2)datetime模块
print(datetime.date.today())
print(datetime.date.fromtimestamp(time.time()-864400) )
current_time = datetime.datetime.now()
print(current_time)
print(current_time.timetuple())
print(current_time.replace(2014,9,12))
str_to_date = datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
new_date = datetime.datetime.now() + datetime.timedelta(days=10)
new_date = datetime.datetime.now() + datetime.timedelta(days=-10)
new_date = datetime.datetime.now() + datetime.timedelta(hours=-10)
new_date = datetime.datetime.now() + datetime.timedelta(seconds=120)
print(new_date)
8.Logging日志模块
1、简单日志打印
import logging
logging.debug('[debug 日志]')
('[info 日志]')
logging.warning('[warning 日志]')
logging.error('[error 日志]')
logging.critical('[critical 日志]')
WARNING:root:[warning 日志]
ERROR:root:[error 日志]
CRITICAL:root:[critical 日志]
可见,默认情况下python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL&&&ERROR&&&WARNING&&&INFO&&&DEBUG&&&NOTSET)
默认的日志格式为:&&&&&日志级别:Logger名称:用户输出消息。
2.灵活配置日志级别,日志格式,输出位置
logging.basicConfig(level=logging.DEBUG,
&&&&&&&&&&&&&&&&&&&&format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
&&&&&&&&&&&&&&&&&&&&datefmt='%a, %d %b %Y %H:%M:%S',
&&&&&&&&&&&&&&&&&&&&filename='log.log',
&&&&&&&&&&&&&&&&&&&&filemode='w')
logging.debug('debug message')
('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
日志文件:
在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有
filename:&&&用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
filemode:&&&文件打开方式,在指定了filename时使用这个参数,默认值为&a&还可指定为&w&。
format:&&&&&指定handler使用的日志显示格式。
datefmt:&&&&指定日期时间格式。(datefmt='%a,&%d&%b&%Y&%H:%M:%S',%p)
level:&&&&&&设置rootlogger(后边会讲解具体概念)的日志级别
stream:&&&&&用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。
若同时列出了filename和stream两个参数,则stream参数会被忽略。
format参数中可能用到的格式化串:%(name)s&&&&&&&&&&&&&Logger的名字%(levelno)s&&&&&&&&&&数字形式的日志级别%(levelname)s&&&&&文本形式的日志级别%(pathname)s&&&&&调用日志输出函数的模块的完整路径名,可能没有%(filename)s&&&&&&&&调用日志输出函数的模块的文件名%(module)s&&&&&&&&&&调用日志输出函数的模块名%(funcName)s&&&&&调用日志输出函数的函数名%(lineno)d&&&&&&&&&&&调用日志输出函数的语句所在的代码行%(created)f&&&&&&&&&&当前时间,用UNIX标准的表示时间的浮&点数表示%(relativeCreated)d&&&&输出日志信息时的,自Logger创建以&来的毫秒数%(asctime)s&&&&&&&&&&&&&&&
&字符串形式的当前时间。默认格式是&&&16:49:45,896&。逗号后面的是毫秒%(thread)d&&&&&&&&&&&&&&&&&
线程ID。可能没有%(threadName)s&&&&&&&&
线程名。可能没有%(process)d&&&&&&&&&&&&&&
进程ID。可能没有%(message)s&&&&&&&&&&&&
用户输出的消息
3.Logger,Handler,Formatter,Filter的概念
logging.basicConfig()(用默认日志格式(Formatter)为日志系统建立一个默认的流处理器(StreamHandler),设置基础配置(如日志级别等)并加到root&logger(根Logger)中)这几个logging模块级别的函数,另外还有一个模块级别的函数是logging.getLogger([name])(返回一个logger对象,如果没有指定名字将返回root&logger)
1).logging库提供了多个组件:Logger、Handler、Filter、Formatter。
Logger&&&&&&&对象提供应用程序可直接使用的接口,Handler&&&&&&发送日志到适当的目的地,Filter&&&&&&&&&&提供了过滤日志信息的方法,Formatter&&&指定日志显示格式。
#&创建一个loggerlogger =&logging.getLogger()#创建一个带用户名的loggerlogger1 =&logging.getLogger('liuyao')#设置一个日志级别logger.setLevel(</)logger1.setLevel(</)#创建一个handler,用于写入日志文件fh =&logging.FileHandler('log.log')#&再创建一个handler,用于输出到控制台ch =&logging.StreamHandler()#&定义handler的输出格式formatterformatter =&logging.Formatter('%(asctime)s&-&%(name)s&-&%(levelname)s&-&%(message)s')fh.setFormatter(formatter)ch.setFormatter(formatter)#&给logger添加handler#logger.addFilter(filter)logger.addHandler(fh)logger.addHandler(ch)#&给logger1添加handler#logger1.addFilter(filter)logger1.addHandler(fh)logger1.addHandler(ch)#给logger添加日志</('logger&info&message')</('logger1&info&message')
2016-02-03 21:11:38,739 - root - INFO - logger info message
2016-02-03 21:11:38,740 - liuyao - INFO - logger1 info message
2016-02-03 21:11:38,740 - liuyao - INFO - logger1 info message
对于等级:
CRITICAL&=&50
FATAL&=&CRITICAL
ERROR&=&40
WARNING&=&30
WARN&=&WARNING
DEBUG&=&10
NOTSET&=&0
9.json&和&pickle&模块
&用于序列化的两个模块
json,用于字符串&和&python数据类型间进行转换
pickle,用于python特有的类型&和&python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
1.Json模块
四个功能:dumps、dump、loads、load
name = {'liuyao':'["age",12]',
&&&&&&&&'yaoyai':'["age",21]'}
print(name)
print(type(name))
a = json.dumps(name)
print(type(a))
{'yaoyai': '["age",21]', 'liuyao': '["age",12]'}
&class 'dict'&
{"yaoyai": "[\"age\",21]", "liuyao": "[\"age\",12]"}
&class 'str'&
10.shelve&模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
import shelve
d = shelve.open('shelve_test')
class Test(object):
&&&&def __init__(self,n):
&&&&&&&&self.n = n
t = Test(123)
t2 = Test(123334)
name = ["alex","rain","test"]
d["test"] = name
d["t1"] = t&&&&&
d["t2"] = t2
10、random模块
random模块是专门用来生成随机数的
1).random.random
random.random()用于生成一个0到1的随机符点数:&0&&=&n&&&1.0
import random
&&& print(random.random)
&built-in method random of Random object at 0x10d2c18&
&&& print(random.random())
2)random.uniform
random.uniform的函数原型为:random.uniform(a,&b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a&&&b,则生成的随机数n:&a&&=&n&&=&b。如果&a&&b,&则&b&&=&n&&=&a。
&&& random.uniform(5,10)
&&& random.uniform(10,10)
&&& random.uniform(10,5)
3)random.randint
 random.randint()的函数原型为:random.randint(a,&b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n:&a&&=&n&&=&b,下限必须小于上限.
&&& random.randint(10,20)
&&& random.randint(10,20)
&&& random.randint(10,20)
4)random.randrange
  random.randrange的函数原型为:random.randrange([start],&stop[,&step]),从指定范围内,按指定基数递增的集合中&获取一个随机数。如:random.randrange(10,&100,&2),结果相当于从[10,&12,&14,&16,&...&96,&98]序列中获取一个随机数。random.randrange(10,&100,&2)在结果上与&random.choice(range(10,&100,&2)&等效。
&&& random.randrange(1,37,2)
&&& random.randrange(1,37)
5)random.choice
random.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。这里要说明&一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list,&tuple,&字符串都属于sequence。有关sequence可以查看python手册数据模型这一章。
&&& random.choice('liuyao')
&&& random.choice('liuyao')
6)random.shuffle
random.shuffle的函数原型为:random.shuffle(x[,&random]),用于将一个列表中的元素打乱。如:
&&& p = ["Python", "is","simple", "and so on..."]&
&&& random.shuffle(p)
&&& print (p)
['Python', 'and so on...', 'simple', 'is']
7)random.sample
random.sample的函数原型为:random.sample(sequence,&k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
&&& li = [1,2,3,4,5,6,7,8,9,10]
&&& slice = random.sample(li,5)
&&& print (slice)
[3, 10, 5, 6, 8]
&&& print (li)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
随机验证码实例:
import&random
checkcode&=&''
for&i&in&range(4):
&&&&current&=&random.randrange(0,4)
&&&&if&current&!=&i:
&&&&&&&&temp&=&chr(random.randint(65,90))
&&&&&&&&temp&=&random.randint(0,9)
&&&&checkcode&+=&str(temp)
print&(checkcode)
四、开源模块
开源模块为第三方模块,是广大python爱好者,开发者,为了实现某些功能封装的模块
1:paramiko模块
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。
下载安装:
wget&http:///files/wupeiqi/pycrypto-2.6.1.tar.gz
tar&-xvf&pycrypto-2.6.1.tar.gz
cd&pycrypto-2.6.1
python&setup.py&build
python&setup.py&install
wget&http:///files/wupeiqi/paramiko-1.10.1.tar.gz
tar&-xvf&paramiko-1.10.1.tar.gz
cd&paramiko-1.10.1
python&setup.py&build
python&setup.py&install
&&&import paramiko
等待更新!!!!!!!
阅读(...) 评论()}

我要回帖

更多关于 quartusii介绍 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信