2019 计算机二级python考试笔记(基于考纲复习笔记)
原创 GoLee丶
发布于2018-08-31 14:16:07
阅读数 3033 收藏
更新于2019-01-25 20:18:49
展开
2019 计算机二级python考试笔记(基于考纲复习笔记)
写的有点乱,有考二级python的朋友加群,一起学习共同进步。群号:850284631(备注:CSDN)
一、eval函数用法
eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。so,结合math当成一个计算器非常好用。
(1):list,tuple,dict和string相互转化
a = "[1,2,3,4,5]"
type(a)
str
print(eval(a),type(eval(a)))
[1, 2, 3, 4, 5]
(2):作为数学运算使用
x=7
eval('3*x')
21
eval('pow(2,4)')
16
(3):此函数存在危险
想一想这样的使用环境:须要用户输入一个表达式。并求值。
假设用户恶意输入。比如:
import(‘os’).system(‘dir’)
那么eval()之后,你会发现,当前文件夹文件都会展如今用户前面。
那么继续输入:
open(‘文件名称’).read()
代码都给人看了。
获取完成,一条删除命令。文件消失。
哭吧!
怎么避免安全问题?
1、自行写检查函数;
2、使用ast.literal_eval:自行查看DOCUMENT
3、很多其它好文:Restricted “safe” eval(Python recipe)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
二:format函数用法
format:字符串格式化。
用法:它通过{}和:来代替传统%方式
(1):使用位置参数——默认0-n
print('my name is {},age {}'.format('guo',18))
my name is guo,age 18
print('my name is {1},age {0}'.format('guo',18))
my name is 18,age guo
name_age = ['guo',18]
print('my name is {},age {}'.format(*name_age))
my name is guo,age 18
(2):使用关键字参数——dict
要点:关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可
print('my name is {name},age is {age}'.format(name='guo',age=18))
my name is guo,age is 18
dict_name = {'name':'guo','age':18}
print('my name is {name},age is {age}'.format(**dict_name))
my name is guo,age is 18
(3):填充与格式化
:[填充字符][对齐方式 <^>][宽度]
print('{:*^10}'.format('love'))
***love***
<:左对齐 ^:居中对齐 >:右对齐
(4):精度与进制
print('{0:.2f}'.format(1/3))
0.33
print('{0:b}'.format(10))
1010
print('{:,}'.format(12369132698))
12,369,132,698
数字 格式 输出 描述
3.1415926 {:.2f} 3.14 保留小数点后两位
3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
-1 {:+.2f} -1.00 带符号保留小数点后两位
2.71828 {:.0f} 3 不带小数
5 {:0>2d} 05 数字补零 (填充左边, 宽度为2)
5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4)
10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4)
1000000 {:,} 1,000,000 以逗号分隔的数字格式
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00e+09 指数记法
13 {:10d} 13 右对齐 (默认, 宽度为10)
13 {:<10d} 13 左对齐 (宽度为10)
13 {:^10d} 13 中间对齐 (宽度为10)
11
‘{:b}’.format(11) 1011
‘{:d}’.format(11) 11
‘{?}’.format(11) 13
‘{:x}’.format(11) b
‘{:#x}’.format(11) 0xb
‘{:#X}’.format(11) 0XB
(5):使用索引
name_age
['guo', 18]
print('my name is {0[0]},age is {0[1]}'.format(name_age))
my name is guo,age is 18
三:复数数据类型
z = 3+4j
z.imag
4.0
z.real
3.0
四:字符串操作
成员检查:in、not in 'Py' in str 'python' not in str
连接:+ str_new = str1 + str2
复制:* str * 2
下标取值:s[i] str[3]
切片:s[i : j] str[3:8]
长度检查:len(s) len(str) print('%s length = %d' (str,len(str)))
最小值:min(s) min(str) 空格在上面字符串中是最小的
最大值:max(s) max(str) 大写字母要小于小写字母
(1)字符串切片
s = 'Python string'
print(s[0],s[:2],s[:-1:2])
P Py Pto ti
(2)查找 & 替换类方法
s.count('t')
2
s.find('t')
2
s.index('t')
2
s.replace('t','o')
'Pyohon soring'
table = str.maketrans('abcd', '1234',)
str = 'abcda'
str.translate(table)
'12341'
(3)判断类方法
s.endswith('g')
True
s.startswith('g')
False
s.isalnum()
False
s='anfkaf'
s.isalpha()
True
s='12313'
s.isdigit()
True
s=' '
s.isspace()
True
s='se ss'
s.islower()
True
s = 'Python Golee'
s.istitle()
True
s.isidentifier()
False
s.isprintable()
True
(4)格式化类方法,返回一个格式化的新字符串
s.lower()
'python golee'
s.upper()
'PYTHON GOLEE'
s.swapcase()
'pYTHON gOLEE'
s.lower().capitalize()
'Python golee'
s.lower().title()
'Python Golee'
s.center(20,'*')
'****Python Golee****'
s.ljust(20,'*')
'Python Golee********'
s.strip()
'Python Golee'
s.zfill(20)
'00000000Python Golee'
(5)拆分组合类方法
s.partition('o')
('Pyth', 'o', 'n Golee')
返回一个以Sep分隔的列表,maxsplit指定拆分次数(因此,列表中元素的个数为maxsplit + 1)。Sep默认为空格,maxsplit默认不限制拆分次数。
1)如果未指定Sep或指定Sep为None,str两端的空格将舍弃;如果指定Sep(不管能否在原字符串中找到Sep),str两端的空格将保留
2)如果未能在原字符串中找到Sep,则返回一个仅包含一个元素的列表,这个元素就是原字符串。
3) str.rsplit()只是从最右边开始拆分。只有在指定maxsplit的情况下才会看到不同效果
s.split()
['Python', 'Golee']
s.split('o',1)
['Pyth', 'n Golee']
s='123'
s.join('abc')
'a123b123c'
s='''
1
2
3
'''
s.splitlines()
['', '1', '2', '3']
五、类型判断和类型间转换
a=10
print(isinstance(a,int))
True
type(a) == int
True
int(x [,base]) int(“8”) 可以转换的包括String类型和其他数字类型,但是会丢失精度
float(x) float(1)或者float(“1”) 可以转换String和其他数字类型,不足的位数用0补齐,例如1会变成1.0
complex(real ,imag) complex(“1”)或者complex(1,2) 第一个参数可以是String或者数字,第二个参数只能为数字类型,第二个参数没有时默认为0
str(x) str(1) 将数字转化为String
repr(x) repr(Object) 返回一个对象的String格式
eval(str) eval(“12+23”) 执行一个字符串表达式,返回计算的结果,如例子中返回35
tuple(seq) tuple((1,2,3,4)) 参数可以是元组、列表或者字典,wie字典时,返回字典的key组成的集合
list(s) list((1,2,3,4)) 将序列转变成一个列表,参数可为元组、字典、列表,为字典时,返回字典的key组成的集合
set(s)set([‘b’, ‘r’])或者set(“asdfg”)将一个可以迭代对象转变为可变集合,并且去重复,返回结果可以用来计算差集x - y、并集x | y、交集x & y
frozenset(s) frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 将一个可迭代对象转变成不可变集合,参数为元组、字典、列表等,
chr(x) chr(0x30) chr()用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。返回值是当前整数对应的ascii字符。
ord(x) ord(‘a’) 返回对应的 ASCII 数值,或者 Unicode 数值
hex(x) hex(12) 把一个整数转换为十六进制字符串
oct(x) oct(12) 把一个整数转换为八进制字符串
六、分支结构
(1)三元操作
x = 1
y = 2
if x<y:
small = x
else:
small = y
print(small)
small_test = x if x<y else y
print(small_test)
1
1
(2)断言操作
一般来说可以用它在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作时,assert关键字就非常有用了。
assert 3 < 4
assert 3 > 4
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
in ()
----> 1 assert 3 > 4
AssertionError:
(3)while循环语句
x = 0
while x < 2:
x +=1
print(x)
1
2
(4)break语句
break语句的作用是终止当前循环,跳出循环体。
x = 0
while x < 5:
if x == 1:
break
x +=1
print(x)
1
(5)continue语句
continue语句的作用是终止本轮循环并开始下一轮循环(这里要注意的是:在开始下一步循环之前,会先测试循环条件)
for i in range(10):
if i % 2 != 0:
continue
print(i)
i += 2
0
2
4
6
8
七、程序的异常处理
print(5/0)
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
in ()
----> 1 print(5/0)
ZeroDivisionError: division by zero
try:
print(5/0)
except ZeroDivisionError:
print("you can't divide by zero")
you can't divide by zero
while True:
first_num = input("\nFirst number:")
if first_num == 'q':
break
second_num = input("\nsecond number:")
try:
answer = int(first_num) / int(second_num)
except ZeroDivisionError:
print("you can't divide by zero")
else:
print(answer)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
First number:2
second number:3
0.6666666666666666
First number:3
second number:0
you can’t divide by zero
First number:q
def build_profile(first, last, **user_info):
profile = {}
profile['first_name'] = first
profile['last_name'] = last
for key, value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile('albert', 'einstein',
location='princeton',
field='physics')
print(user_profile)
{'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}
八、ramdom库使用
import random
dir(random)
['BPF',
'LOG4',
'NV_MAGICCONST',
'RECIP_BPF',
'Random',
'SG_MAGICCONST',
'SystemRandom',
'TWOPI',
'_BuiltinMethodType',
'_MethodType',
'_Sequence',
'_Set',
'__all__',
'__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'_acos',
'_bisect',
'_ceil',
'_cos',
'_e',
'_exp',
'_inst',
'_itertools',
'_log',
'_pi',
'_random',
'_sha512',
'_sin',
'_sqrt',
'_test',
'_test_generator',
'_urandom',
'_warn',
'betavariate',
'choice',
'choices',
'expovariate',
'gammavariate',
'gauss',
'getrandbits',
'getstate',
'lognormvariate',
'normalvariate',
'paretovariate',
'randint',
'random',
'randrange',
'sample',
'seed',
'setstate',
'shuffle',
'triangular',
'uniform',
'vonmisesvariate',
'weibullvariate']
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
random.randint(1,10)
6
random.random()
0.32555435954202816
help(random.random)
Help on built-in function random:
random(…) method of random.Random instance
random() -> x in the interval [0, 1).
random.uniform(1.2,1.6)
1.5069837267640016
help(random.uniform)
Help on method uniform in module random:
uniform(a, b) method of random.Random instance
Get a random number in the range [a, b) or [a, b] depending on rounding.
random.choice('gu2455')
'u'
random.choice(['gu12344','caoyang'])
'gu12344'
random.randrange(1,10,2)
3
random.sample([1,2,3,4,5],4)
[4, 2, 5, 1]
a = [i for i in range(5)]
a
[0, 1, 2, 3, 4]
random.shuffle(a)
a
[2, 1, 0, 4, 3]
import numpy as np
dir(np.random)
['Lock',
'RandomState',
'__RandomState_ctor',
'__all__',
'__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__path__',
'__spec__',
'_numpy_tester',
'absolute_import',
'bench',
'beta',
'binomial',
'bytes',
'chisquare',
'choice',
'dirichlet',
'division',
'exponential',
'f',
'gamma',
'geometric',
'get_state',
'gumbel',
'hypergeometric',
'info',
'laplace',
'logistic',
'lognormal',
'logseries',
'mtrand',
'multinomial',
'multivariate_normal',
'negative_binomial',
'noncentral_chisquare',
'noncentral_f',
'normal',
'np',
'operator',
'pareto',
'permutation',
'poisson',
'power',
'print_function',
'rand',
'randint',
'randn',
'random',
'random_integers',
'random_sample',
'ranf',
'rayleigh',
'sample',
'seed',
'set_state',
'shuffle',
'standard_cauchy',
'standard_exponential',
'standard_gamma',
'standard_normal',
'standard_t',
'test',
'triangular',
'uniform',
'vonmises',
'wald',
'warnings',
'weibull',
'zipf']
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
np.random.random(20)
array([0.69454737, 0.77229112, 0.45121221, 0.06512901, 0.19775742,
0.66398487, 0.20460758, 0.0545738 , 0.58054043, 0.1784286 ,
0.32031521, 0.18602763, 0.99836724, 0.85094308, 0.53659558,
0.55826864, 0.55052432, 0.22760714, 0.16809962, 0.86779955])
np.random.uniform(10,20,20)
array([10.05210186, 17.48397259, 15.0361042 , 13.56990686, 11.65007754,
17.10151908, 11.90372554, 18.30047846, 11.48913799, 10.26947544,
10.3940895 , 13.92287236, 12.99326584, 19.79723074, 19.65732271,
11.23057858, 11.17339828, 12.44481384, 15.81981985, 18.32584816])
import time
九、time库使用
dir(time)
['_STRUCT_TM_ITEMS',
'__doc__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'altzone',
'asctime',
'clock',
'ctime',
'daylight',
'get_clock_info',
'gmtime',
'localtime',
'mktime',
'monotonic',
'perf_counter',
'process_time',
'sleep',
'strftime',
'strptime',
'struct_time',
'time',
'timezone',
'tzname']
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
(1)结构化时间
time.localtime()
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=9, tm_hour=15, tm_min=50, tm_sec=0, tm_wday=3, tm_yday=221, tm_isdst=0)
time.gmtime()
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=9, tm_hour=7, tm_min=50, tm_sec=9, tm_wday=3, tm_yday=221, tm_isdst=0)
time.mktime(time.localtime())
1533801052.0
time.strftime('%Y-%m-%d %X',time.localtime())
'2018-08-09 15:52:25'
time.strptime('2018-08-09 15:52:25','%Y-%m-%d %X')
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=9, tm_hour=15, tm_min=52, tm_sec=25, tm_wday=3, tm_yday=221, tm_isdst=-1)
参考bolg:http://www.cnblogs.com/Echo-O/p/9385316.html
time.time()
1533801293.4284136
start_time = time.time()
time.sleep(5)
end_time = time.time()
print(start_time-end_time)
-5.0061445236206055
time.asctime(time.localtime())
'Thu Aug 9 15:57:27 2018'
time.ctime(time.time())
'Thu Aug 9 15:58:46 2018'
time.struct_time((2018, 8, 3, 12, 57, 19, 134860,0,0))
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=3, tm_hour=12, tm_min=57, tm_sec=19, tm_wday=134860, tm_yday=0, tm_isdst=0)
time.strftime('%y-%m-%d')
'18-08-09'
time.strftime('%X')
'16:03:33'
十、jieba使用小结
(1):主要功能
jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型
jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用
jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。 jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))
Building prefix dict from the default dictionary ...
Dumping model to file cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache
Loading model cost 1.074 seconds.
Prefix dict has been built succesfully.
Full Mode: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))
Default Mode: 我/ 来到/ 北京/ 清华大学
seg_list = jieba.cut("他来到了网易杭研大厦")
print(", ".join(seg_list))
他, 来到, 了, 网易, 杭研, 大厦
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")
print("搜索引擎模式:"+",".join(seg_list))
搜索引擎模式:小明,硕士,毕业,于,中国,科学,学院,科学院,中国科学院,计算,计算所,,,后,在,日本,京都,大学,日本京都大学,深造
(2):载入词典
(3):调整词典
使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典
使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。
意:自动计算的词频在使用 HMM 新词发现功能时可能无效。
print('/'.join(jieba.cut('如果放到post中将出错。',HMM=False)))
如果/放到/post/中将/出错/。
jieba.suggest_freq(('中', '将'), True)
494
print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))
如果/放到/post/中/将/出错/。
print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
「/台/中/」/正确/应该/不会/被/切开
jieba.suggest_freq('台中', True)
69
print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
「/台中/」/正确/应该/不会/被/切开
(4):基于 TF-IDF 算法的关键词抽取
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence 为待提取的文本
topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
withWeight 为是否一并返回关键词权重值,默认值为 False
allowPOS 仅包括指定词性的词,默认值为空,即不筛选
jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件
关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径
用法: jieba.analyse.set_idf_path(file_name) # file_name为自定义语料库的路径
关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径
用法: jieba.analyse.set_stop_words(file_name) # file_name为自定义语料库的路径
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
(5):基于 TextRank 算法的关键词抽取
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默认过滤词性。
jieba.analyse.TextRank() 新建自定义 TextRank 实例
10.5.1:词性标注
import jieba.posseg as pseg
words = pseg.cut("永远学习,相信自己")
for word,flag in words:
print('%s %s' %(word,flag))
永远 d
学习 v
, x
相信 v
自己 r
10.5.2:并行分词
基于 python 自带的 multiprocessing 模块,目前暂不支持 Windows
jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数
jieba.disable_parallel() # 关闭并行分词模式
10.5.3:. Tokenize:返回词语在原文的起止位置
注意,输入参数只接受 unicode
默认模式
result = jieba.tokenize(u'你最棒,nice do it')
for tk in result:
print("word %s \t\t start:%d \t\t end:%d" %(tk[0],tk[1],tk[2]))
word 你 start:0 end:2
word 最棒 start:2 end:4
word , start:4 end:5
word nice start:5 end:9
word start:9 end:10
word do start:10 end:12
word start:12 end:13
word it start:13 end:15
10.5.3:搜索模式
result = jieba.tokenize(u'永和服装饰品有限公司', mode='search')
for tk in result:
print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
word 永和 start: 0 end:2
word 服装 start: 2 end:4
word 饰品 start: 4 end:6
word 有限 start: 6 end:8
word 公司 start: 8 end:10
word 有限公司 start: 6 end:10
十一、wordcloud库使用
from wordcloud import WordCloud
import matplotlib.pyplot as plt
wc = WordCloud()
wc.fit_words()
plt.inshow(wc)
plt.close()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in ()
5 wc = WordCloud()
6 #传入词频统计的字典
----> 7 wc.fit_words()
8 #展示词云图
9 plt.inshow(wc)
TypeError: fit_words() missing 1 required positional argument: ‘frequencies’
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
segStat = segmentDataFrame.groupby(
by="segment"
)["segment"].agg({
"计数":numpy.size
}).reset_index().sort_values(
["计数"],
ascending=False
);
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in ()
1 #进行词频统计
----> 2 segStat = segmentDataFrame.groupby(
3 by=“segment”
4 )[“segment”].agg({
5 “计数”:numpy.size
NameError: name ‘segmentDataFrame’ is not defined
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
十二、PyInstaller库
(1):基本操作
cmd——> pyinstaller .py
(2):带参数使用
例如:--icon参数的使用如下:(指定打包程序使用的图标文件)
>pyinstaller -F --icon=“D:\a.ico” D:\python_test.py
>pyinstaller -F -w -i D:\tmp\main.ico D:\python_test.py
-F 表示生成单个可执行文件,执行后dist目录中出现了python_test.exe文件,没有任何依赖库,执行它即可。
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-i 表示可执行文件的图标
(3):注意事项
文件路径中不能出现空格和英文句号(.);
源文件必须是UTF-8编码,暂不支持其他编码类型。采用IDLE编写的源文件都保存为UTF -8编码形式,可直接使用即可。
十三:数据的读取和写入
(1)数据的读取
filename = r'C:\Users\Administrator\Desktop\test11.csv'
with open(filename) as open_file:
print(open_file.read())
1,2
2,3
3,4
4,5
5,6
6,7
7,8
8,9
filename = r'C:\Users\Administrator\Desktop\test11.csv'
with open(filename) as open_file:
for line in open_file:
print(line.replace('\n',''))
1,2
2,3
3,4
4,5
5,6
6,7
7,8
8,9
filename = r'C:\Users\Administrator\Desktop\test11.csv'
with open(filename) as open_file:
lines = open_file.readlines()
for line in lines:
print(line)
1,2
2,3
3,4
4,5
5,6
6,7
7,8
8,9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
lines
['1,2\n', '2,3\n', '3,4\n', '4,5\n', '5,6\n', '6,7\n', '7,8\n', '8,9\n']
(2):数据的写入
读取模式:‘r’,写入模式:‘w’,附加模式:‘a’,读取和写入模式:‘r+’
注意:w参数 没有文件是创建,有文件则是覆盖文件。
a参数 没有文件是创建,有文件则是追加内容
with open(filename,'a') as open_file:
open_file.write('9,10')
with open(filename) as open_file:
for line in open_file:
print(line.replace('\n',''))
1,2
2,3
3,4
4,5
5,6
6,7
7,8
8,9
9,10
with open(filename) as open_file:
ls = []
for line in open_file:
line = line.replace('\n','')
ls.append(line.split(','))
open_file.close()
ls
[['1', '2'],
['2', '3'],
['3', '4'],
['4', '5'],
['5', '6'],
['6', '7'],
['7', '8'],
['8', '9'],
['9', '10']]
for raw in ls:
for column in raw:
print(column)
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
十四:组合数据类型:
(1):列表的操作函数、列表的操作方法
list_1 = [i for i in range(5)]
list_1
[0, 1, 2, 3, 4]
list_1.append(5)
list_1
[0, 1, 2, 3, 4, 5]
list_1.insert(0,0.99)
list_1
[0.99, 0, 1, 2, 3, 4, 5]
list_1[0]=0.88
print(list_1)
[0.88, 0, 1, 2, 3, 4, 5]
del list_1[0]
print(list_1)
[0, 1, 2, 3, 4, 5]
list_1.pop()
print(list_1)
[0, 1, 2, 3, 4]
list_1.pop(0)
print(list_1)
[1, 2, 3, 4]
list_1.remove(1)
list_1
[2, 3, 4]
list_1.sort(reverse=True)
list_1
[4, 3, 2]
sorted(list_1)
[2, 3, 4]
list_1
[4, 3, 2]
print(list_1)
list_1.reverse()
print(list_1)
[4, 3, 2]
[2, 3, 4]
#写的有点乱,往后继续完善补充。。。。。