“””
DHCP
Dynamic 动态 Host 主机 Configuration 配置 Protocol 协议
TCP/IP family
IP 网际协议
TCP 传输控制协议 构建于IP之上
“”“
r 读文件
w 写文件
rb 读二进制文件
wb 写二进制文件
异常机制 - 处理程序在运行过程中出现的意外状况的手段
因为不是所有的问题都能够在写程序调试程序的时候能发现
打开文件 –> 判断大小 –> 分配内存 –> 读取文件 –> 关闭文件
import time
"""
# 读文件
def main(): # 下列方法,即使读取一半,而后文件崩溃,也可以自己释放,自动关闭,优于“fs = open() fs = close()”
try:
with open('./build/hello', 'r', encoding='utf - 8') as fs: # “./ ”一个点-当前路径,两个点-上一路径;
# content = fs.read() # 一次性读全部文档
# print(content)
# for line in fs: # 一行行的读
# print(line,end='')
# time.sleep(0.5)
my_list = fs.readlines() # 返回到列表容器里面
print(my_list)
except FileNotFoundError as e :
print(e)
print('指定的文件无法打开')
except IOError:
print('指定的文件无法打开')
print('程序执行结束')
# “try: except FileNotFoundError:” 保护文件不会崩溃,如果文件打不开就执行except FileNotFoundError:后的内容
if __name__ == '__main__':
main()
# 写文件
def main():
try:
with open('hello', 'w', encoding='utf - 8') as fs: # 'w'完全改写 'a' 内容末尾追加
fs.write('轻轻的我走了\n')
fs.write('正如我轻轻的来\n')
except FileNotFoundError as e :
print(e)
print('指定的文件无法打开')
except IOError:
print('指定的文件无法打开')
print('程序执行结束')
if __name__ == '__main__':
main()
def main():
try:
with open('hello.png', 'rb') as fs1:
data = fs1.read()
print(data)
print(type(data))
with open('./build/hello.png', 'wb') as fs:
fs.write(data)
except FileNotFoundError as e :
print(e)
print('指定的文件无法打开')
except IOError:
print('指定的文件无法打开')
print('程序执行结束')
if __name__ == '__main__':
main()
# BASE64 编码 - 文本与二进制互相转换
# json - Javascript Object Notation 带格式的纯文本
# http://json.org
"""
from math import sqrt
def is_prime(n):
assert n > 0 # '断言',若不满足条件,程序直接结束
for factor in range(2,int(sqrt(n)) + 1):
if n % factor == 0:
return False
return True if n != 1 else False
def main():
filenames = ['a.txt','b.txt','c.txt']
fs_list = []
try:
# 把可能出状况(在执行时有风险)的代码放到try中
for filename in filenames:
fs_list.append(open(filename, 'w', encoding='utf - 8'))
for n in range(1,10000):
if is_prime(n):
if n < 100:
fs_list[0].write(str(n), end='\n')
elif n < 1000:
fs_list[1].write(str(n), end ='\n')
else:
fs_list[2].write(str(n), end='\n')
except FileNotFoundError as e:
print('指定的文件无法打开')
# expect 可以写多个分别用于处理不同的异常状况
except IOError:
# 如果try中出现了状况就通过except来捕获错误(异常)进行对应的处理
print('读写文件错误')
else:
pass
# 如果没有出现状况那么可以把无风险的代码放到else中执行
finally:
# 不管程序正常还是异常最后这里的代码一定会执行
# 所以此处最适合做释放外部资源的操作
# 此处时最好的释放外部资源的位置因为这里的代码总是会执行的
for fs in fs_list:
fs.close()
print('操作完成')
if __name__ == '__main__':
main()
例. json 读、写操作
import json
def main():
try:
with open('data.json', 'r', encoding='utf-8') as fs1:
your_dict = json.load(fs1)
print(type(your_dict))
print(your_dict)
except IOError as e:
print(e)
print('读取数据完成')
if __name__ == '__main__':
main()
import json
def main():
my_dict = {
'name': 'xl',
'age': '25',
'QQ': '110',
'friends': ['yqx', 'yc'],
'car': [{'append': 'auto', 'speed': '120'},
{'append': 'byd', 'speed': '119'},
{'append': 'benz', 'speed': '911'}
]
}
try:
with open('data.json', 'w', encoding='utf - 8') as fs:
json.dump(my_dict, fs)
except IOError as e:
print(e)
print('数据保存完成')
if __name__ == '__main__':
main()
小结:在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。
例.从天行数据上获取图片网址及下载图片~
import requests
import json
def main():
resp = requests.get('http://api.tianapi.com/meinv/?key=自己注册后获得&num=10')
my_dict = json.loads(resp.text)
for temp_dict in my_dict['newslist']:
pic_url = temp_dict['picUrl']
print(temp_dict['picUrl'])
resp = requests.get(pic_url)
filename = pic_url[pic_url.rfind('/') + 1:]
try:
with open(filename,'wb') as fs:
fs.write(resp.content)
except IOError as e:
print(e)
if __name__ == '__main__':
main()