赞
踩
在计算机中,所有的信息,包括图片、文件、程序等,都被表示为二进制数据。
二进制是一种数字系统,只有两个数字0和1,用于表示信息的两种状态。
计算机之所以使用二进制的原因是因为它可以很容易地被物理设备实现,二进制数的简单性和可操作性也使得计算机能够快速地处理信息。
# 1.打开文件 # 第一个参数可以是相对路径,也可以是绝对路径 # mode 读取文件的类型,rb表示二进制 file_object = open('info.txt', mode='rb') # 2. 读取文件的内容,并赋值给data data = file_object.read() # 3. 关闭文件 file_object.close() print(data) # 打印出来的是文件内原文的二进制类型 # b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc...' # 将文本的内容由 二进制字节类型,转换为 utf-8 字符串类型 text = data.decode("utf-8") print(text) # 你好,我是无言非影。
非文本文件的类型,一般就直接读取转换后的二进制类型内容。
file_object = open('1.png', mode='rb')
# 2. 读取文件的内容,并赋值给data
data = file_object.read()
# 3. 关闭文件
file_object.close()
print(data)
# b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00:\x00\x...'
每次读取文本文件的时候,都需要手动使用 decode
内置方法使用起来会很不方便。
# 参数 mode 表示文件的打开模式,'rt' 表示只读文本模式(Read Text)。
# 参数 encoding 表示文件的编码方式,'utf-8' 表示使用 UTF-8 编码。
file_object = open('info.txt', mode='rt', encoding='utf-8')
# 读取整个文件的内容
data = file_object.read()
# 关闭文件
file_object.close()
print(data)
# 你好,我是无言非影。
注意:
路径
读文件的时候,文件不存在,程序会报错
可以使用 python 内置函数判断路径是否存在
# 判断路径是否存在
import os
exists = os.path.exists('info.txt')
print(exists) # True
no_exists = os.path.exists('info123.txt')
print(no_exists) # False
写文本文件
mode='wb'
表示指定文件内容是以二进制写入,需要将写入的内容通过 .encode('utf-8')
转换为文本可是
file_object = open('writeTest.txt', mode='wb')
file_object.write('wuyanfeiying'.encode('utf-8'))
file_object.close()
# 可以简化为
# mode='wt' 表示使用 'wt' 表示文本写入模式。
可以简化为:
mode=‘wt’ 表示使用 ‘wt’ 表示文本写入模式
file_object = open('writeTest.txt', mode='wt')
file_object.write('wuyanfeiying2')
file_object.close()
写图片等非文本文件
例子:复制图片
# 打开二进制文件 'sgs_1.jpg' 以二进制读取模式
f1 = open('sgs_1.jpg', mode='rb')
# 读取打开的二进制文件的全部内容,并存储在变量 'content' 中
content = f1.read()
# 关闭已打开的文件。
f1.close()
# 以二进制写入模式打开文件 'sgs_2.jpg'
f2 = open('sgs_2.jpg', mode='wb')
# 将之前从 'sgs_1.jpg' 读取的内容写入 'sgs_2.jpg' 文件
f2.write(content)
# 闭已打开的写入文件 'sgs_2.jpg'
f2.close()
让用户输入用户名和密码,之后写入
files
文件夹下的info.txt
文件中
user = input("请输入用户名:")
pwd = input("请输入密码:")
data = "{}-{}".format(user,pwd)
file_object = open('files/info.txt', mode='wt', encoding='utf-8')
file_object.write(data)
file_object.close()
while True:
user = input("请输入用户名(输入q/Q退出):")
if user.upper() == 'Q':
break
pwd = input("请输入密码:")
data = "{}-{}".format(user, pwd)
file_object = open('files/info.txt', mode='wt', encoding='utf-8')
file_object.write(data)
file_object.close()
出现问题:文件只更新最新的一条数据
原因:使用 w
模式 写入文件的时候,会先清空文件,再在文件中写入内容。
解决方案:只打开文件一次,写入一次即可。
修改后:
file_object = open('files/info.txt', mode='wt', encoding='utf-8')
while True:
user = input("请输入用户名(输入q/Q退出):")
if user.upper() == 'Q':
break
pwd = input("请输入密码:")
data = "{}-{}\n".format(user, pwd) # 加入换行符
file_object.write(data)
file_object.close()
利用python取获取某个网址的发送请求并获取结果,需要利用到第三方的模块。
pip install requests
import requests
res = requests.get(url="https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=20",
headers={
"User-Agent": "Mozilla/5.0..."
}
)
print(res.content)
res.content
获取的是 网络传输的原始的二进制信息
以二进制格式存储获取到的数据保存在 log1.txt中。
file_object = open('files/logo1.txt', mode='wb')
file_object.write(res.content)
file_object.close()
从网上下载一张图片,文本信息写入文件。
import requests
res = requests.get(url="https://gd-hbimg.huaban.com/702dc8151dd594c701672d3141bb588aa38bbd7462ff-cHlM9F_fw1200",
headers={
"User-Agent": "Mozilla/5.0...."
}
)
print(res.content)
file_object = open('files/fw1200.jpg', mode='wb')
file_object.write(res.content)
file_object.close()
"User-Agent"
需要填写自己浏览器访问的信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。