1.字符串类型 str
在程序中用于表示文字信息,本质上是unicode编码中的二进制
name = ‘小明’
2.字节类型 bytes
表示文字信息,本质上是utf-8/gbk编码的二进制 对Unicode编码进行压缩 方便文件储存和网络传输
name = '小明'
字符串类型通过encode()函数转换成字节类型
字节类型通过decode()函数转换成字符串类型
name = '小明' data = name.encode('utf-8') print(data) data = data.decode('utf-8') print(data)
输出
C:\Users\AppData\Local\Programs\Python\Python39\python.exe D:/pythonProject2/demo/myweb/tests.py
b'\xe5\xb0\x8f\xe6\x98\x8e'
小明
Process finished with exit code 0
可表示原始二进制(图片,文件等信息)
1.1读文件
读文本文件
打开文件
参数 路径 相对路径 info.txt
绝对路径 c:/user/info.txt
参数 模式 r read
b 二进制 binary
#打开文件 fileobject = open('urls.py',model='rb') #读取文件的内容,并赋值给data data = fileobject.read() #关闭文件 fileobject.close() print(data) print(type(data))
打印:
b"from django.contrib import admin\r\nfrom django.urls import path, include\r\nfrom . import views\r\n\r\nurlpatterns = [\r\n #path('admin/', admin.site.urls),\r\n path('index/', views.index),\r\n #path('my_admin/', include('myweb.urls')),\r\n\r\n]"
<class 'bytes'>
结尾的\r 和\n
\r是回车(CR) ,将当前位置移到本行开头,ASCII码值(十进制)为013。
区别:
1、是否换行
'\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;'\n' 换行,就是输入完一行内容后,光标转到下一行的起始位置 ,不会回到行首。
例如:printf("first line\n");
2、表现不同
Unix系统里,每行结尾只有“<换行>”,即"\n";Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”,即"\r";。
3、不同系统打开会不同
Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
将读取的字节类型内容转换成字符串类型
#打开文件 fileobject = open('views.py',mode='rb') #读取文件的内容,并赋值给data data = fileobject.read() #关闭文件 fileobject.close() view = data.decode('utf-8') print(data) print('--------------------------------------------------------') print(view) print('--------------------------------------------------------') print(type(data))
输出:
b'from django.shortcuts import render\r\nfrom django.http import HttpResponse\r\n\r\n\r\n# Create your views here.\r\ndef index(request):\r\n return HttpResponse("nihao")'
--------------------------------------------------------
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("nihao")
--------------------------------------------------------
<class 'bytes'>
mode='rt' 直接读取文本内容 实质上还是先读二进制再转换
t 文本模式 (默认)。 |
#打开文件 fileobject = open('views.py', mode='rt', encoding='utf-8') #读取文件的内容,并赋值给data data