python基础知识的重新认识
昨天模拟书本上client和server交互的例子,代码明明是按照书上写的,可是就是出现了错误,像下面这样:
# tcpserver
from socket import *
from time import ctime HOST =''
PORT = 6555
BUFSIZ = 2048
ADDR = (HOST,PORT) tcpservsock = socket(AF_INET,SOCK_STREAM)
tcpservsock.bind(ADDR) tcpservsock.listen(5) while True: print('waiting for connection...')
tcpClisock,addr = tcpservsock.accept()
print('...connected from:',addr) while True:
data = tcpClisock.recv(BUFSIZ)
if not data:
break
print(data.decode('utf8'))
tcpClisock.send('[%s]%s'%(bytes(ctime(),'utf8'),data)) # 这里弹出错误
tcpClisock.close() tcpservsock.close()
#tcpClient
from socket import *
HOST = 'localhost'
PORT = 6555
BUFSIZ = 2048
ADDR = (HOST,PORT) tcpClisock = socket(AF_INET,SOCK_STREAM)
tcpClisock.connect(ADDR)
while True:
data = input('> ')
if not data: break
tcpClisock.send(data.encode())
data = tcpClisock.recv(BUFSIZ)
if not data:
break
print(data.decode('utf-8')) tcpClisock.close()
然后错误就出现了:
waiting for connection...
...connected from: ('127.0.0.1', 3786)
hi
Traceback (most recent call last):
File "C:\Users\yfg\Desktop\server.py", line 26, in <module>
tcpClisock.send('[%s]%s'%(bytes(ctime(),'utf8'),data))
TypeError: a bytes-like object is required, not 'str'
在苦思冥想之后,我发现:在server.py line26中 ,我将二进制数据放在了 字符串格式化符后面,这是不对的,所以只要在原来 '[%s]%s'%(bytes(ctime(),'utf8'),data) 前面 加上 b ,就像这样 b'[%s]%s'%(bytes(ctime(),'utf8'),data) ,然后 跑起来 :在服务器这边得到这个 :
,在客户端这边得到这个: 问题就解决了 。 总结一下就是:字符串格式化后跟字符串,二进制格式化要在字符串格式前加字母b。
python基础知识的重新认识的更多相关文章
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- python基础知识(二)
以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍
- python 基础知识(一)
python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...
- python基础知识讲解——@classmethod和@staticmethod的作用
python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- python 爬虫与数据可视化--python基础知识
摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
- Python基础知识(五)
# -*- coding: utf-8 -*-# @Time : 2018-12-25 19:31# @Author : 三斤春药# @Email : zhou_wanchun@qq.com# @Fi ...
- Python基础知识(Basic knowledge)
Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...
- Python 基础知识(一)
1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...
随机推荐
- 可用的 .net core 支持 RSA 私钥加密工具类
首先说明 MS并不建议私钥加密,而且.net 于安全的考虑,RSACryptoServiceProvider类解密时只有同时拥有公钥和私钥才可以,原因是公钥是公开的,会被多人持有,这样的数据传输是不安 ...
- 现有.NET 开源框架浅析
自己一直在关注框架,也喜欢捣鼓一些框架,最近我们自己一直是在用OSGI.NET 做插件式模块开发,感兴趣的可以到 http://www.iopenworks.com/ 官网了解,在进行OSGI.N ...
- 30)PHP,引用对象和克隆对象的区别
复制文件.建立快捷方式的区别,克隆就是复制,引用就是快捷方式,引用的对象实际上同一个东西,修改任何一个变量,另外一个也会跟着变化.
- 吴裕雄--天生自然C语言开发:约瑟夫生者死者小游戏
个人在一条船上,超载,需要 人下船. 于是人们排成一队,排队的位置即为他们的编号. 报数,从 开始,数到 的人下船. 如此循环,直到船上仅剩 人为止,问都有哪些编号的人下船了呢? #include&l ...
- SGD/BGD/MBGD使用python简单实现
算法具体可以参照其他的博客: 随机梯度下降: # coding=utf-8 ''' 随机梯度下降 ''' import numpy as np # 构造训练数据 x = np.arange(0., 1 ...
- QQ消息群发助手(超级简单)
大家好!我开发的小工具,效果见动图: 下载地址 QQ群发助手.rar 代码: def Login(): global Flag try: bot.Login(['-q',v1.get()]) tkin ...
- jQuery实现button按钮提交表单
在JSP页面中,通常使用button按钮提交表单数据,使用jQuery实现代码如下: <span style="font-family:Comic Sans MS;font-size: ...
- [LC] 404. Sum of Left Leaves
Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two l ...
- Leetcode13_罗马数字转整数
题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1. ...
- try中定义的变量在finally中找不到
凡是代码块中的变量,作用域都只在代码块中 https://blog.csdn.net/qq_20936333/article/details/81062966 问题: 解决: