小尹学python

导航

Python:文件读写

#  1、打开文件
#  路径:
#  相对路径:‘py.docx'
#  绝对路径:’D:\Python\路飞‘
#  模式
#  rb,表示读取文件原始的二进制(r表示读取,b表示二进制)
# 只读:r、rt、rb  (常用)r默认rt
#     存在:读
#     不存在:报错
# 只写:w、wt、wb  (常用)w默认rt
#     存在:清空再写
#     不存在:创建再写
# 只写:x、xt、xb  (基本不用)x默认rt
#     存在:报错
#     不存在:创建再写
# 只写:a、at、ab  (少用)a默认rt
#     存在:尾部追加
#     不存在:创建再写
# 读写:
#     r+、rb+、rb 默认光标位置在起始位置,先写后读的话,写入的内容会依次把已有内容覆盖,然后再读取光标后的内容,先读后写的话,会在尾部追加内容
#     w+、wb+、wb+ 默认光标位置在起始位置,先写后读的话,会把原内容清空再写入,然后再读取光标后的内容,读取的内容为空
#     x+、xb+、xb+
#     a+、ab+、ab+  默认光标位置在末尾

#  打开文件
file = open('222.txt',mode='rb')
#  读取内容,并赋值给date
data = file.read()
#  关闭文件
file.close()
print(data)
#  转换成utf-8,也即转换成字符串内容
text = data.decode('utf-8')
print(text)

#  直接读取字符串内容
file_02 = open(r'E:\迅雷下载\111.txt',mode='rt',encoding='utf-8')
data_02 = file_02.read()
file_02.close()
print(data_02)
#  windows绝对路径表示法:用反斜杠,或者双斜杠:如E:\\迅雷下载\\111.txt,或者:r'E:\迅雷下载\111.txt'

#  判断路径是否存在
import os
a = os.path.exists('E:\\迅雷下载\\111.txt')
print(a)  #  结果True 或者False


#  打开图片文件
file_01 = open('一寸照.JPG',mode='rb')
#  读取内容,并赋值给date_01
date_01 = file_01.read()
#  关闭文件
file_01.close()
print(date_01)

#  2、写文件
#  方法一
file_03 = open('123.txt',mode='wb')
file_03.write('四大天王'.encode('utf-8'))
file_03.close()
#  方法二
file_03 = open('123.txt',mode='wt',encoding='utf-8')  #  encoding='utf-8'可以不用,系统默认
file_03.write('四大天王')
file_03.close()

#  3、图片文件写入
#  方法:先读取原图二进制内容,再写入到新文件
file_04 = open('一寸照02.JPG',mode='wb')
file_04.write(date_01)
file_04.close()

#  注意:w写入默认清空原先内容
#  案例:如何重复写入
file_05 = open('anli.txt',mode='wt',encoding='utf-8')  # 不要循环的时候重复打开,否则前面内容会被清空
while True:
    user_name = input('请输入用户名:')
    if user_name.upper() == 'Q':
        break
    user_pass = input('请输入密码:')
    user_info = f'用户名是:{user_name},密码是{user_pass}\n'
    file_05.write(user_info)
file_05.close()  # 要在循环结束后关闭,否则会报错

#  案例二,网络读取图片
import requests
file_06 = requests.get(url="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fhbimg.b0.upaiyun.com%2F7d4449c626791befe159cc90b01426256172153125db3-uL8GcZ_fw658&refer=http%3A%2F%2Fhbimg.b0.upaiyun.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1635870045&t=94d326be0b5d20949fc9d5d772caf01f")
file_07 = open('meinv.png',mode='wb')
file_07.write(file_06.content)
file_07.close()

#  4、读写一:r+
#  设置原文件”123.txt“内容为”四小天王“
#  案例一:先读后写
file_08 = open('123.txt',mode='rt+',encoding='utf-8')
file_09 = file_08.read()
print(file_09)  #  输出:四小天王
file_08.write('齐天大圣')  #  输出文件内容为:四小天王齐天大圣
#  案例二:先写后读
file_08 = open('123.txt',mode='rt+',encoding='utf-8')
file_08.write('齐天')  #  输出文件内容为:齐天天王
file_09 = file_08.read()
print(file_09)  #  输出:天王

#  4、读写一:w+
#  设置原文件”123.txt“内容为”四小天王“
#  案例一:先读后写
file_10 = open('123.txt',mode='w+',encoding='utf-8')  #  清空文件内容
file_11 = file_10.read()
print(file_11)  #  输出为空
file_10.write('我是谁')  #  输出文件内容:我是谁
#  案例二:先写后读
file_10 = open('123.txt',mode='w+',encoding='utf-8')   #  清空文件内容
file_10.write('我是谁')  #  输出文件内容:我是谁
file_11 = file_10.read()
print(file_11)  #  输出为空

#  5、读写一:a+
#  设置原文件”123.txt“内容为”四小天王“
#  案例一:先读后写
file_10 = open('123.txt',mode='a+',encoding='utf-8')
file_11 = file_10.read()
print(file_11)  #  输出为空
file_10.write('我是谁')  #  输出文件内容:四小天王我是谁
#  案例二:先写后读
file_10 = open('123.txt',mode='a+',encoding='utf-8')
file_10.write('我是谁')  #  输出文件内容:四小天王我是谁
file_10.seek(0)  # 把光标移到第一个位置,就可以顺利读取全部内容
file_11 = file_10.read()
print(file_11)  #  输出:四小天王我是谁

posted on 2021-10-04 00:28  小尹学python  阅读(49)  评论(0编辑  收藏  举报