首页 > 其他分享 >文件操作

文件操作

时间:2024-05-15 09:31:49浏览次数:11  
标签:fp 文件 open qwer 123 print 操作 data

文件操作

将内存中的数据持久化存储到文件中

【一】打开文件的两种方式

【1】使用open语句

#三个参数
# 文件路径、
# 打开文件的模式(w覆盖写、a追加写、r读)、
# 编码格式
1.打开文件并赋给句柄对象
fp = open('01.txt','r',encoding='utf-8')
print(fp)

<_io.TextIOWrapper name='01.txt' mode='r' encoding='utf-8'>

2.读取所有文件数据
data = fp.read()

3.打印
print(data)

666!

4.关闭
fp.close()

【2】with语句

  • 在with语句内部打开文件以后自动执行 close() 把文件关闭--- 节省资源
with open('01.txt','r',encoding='utf8') as fp:
    data = fp.read()
    print(data)
    
	666!

【二】文件的操作模式

【1】读模式 r

with open('01.txt', 'r', encoding='utf8') as fp:
    data = fp.read()
username = data.split('|')
print(username)

['666!']

#字符串格式化语法
# f:格式化输出
# b:将字符串转为二进制
# r:取消转义

print('a\nb')
print('a\\nb')
print(r'a\nb')

a
b
a\nb
a\nb

print('D:\pythonProject\08\01.txt')
print(r'D:\pythonProject\08\01.txt')

D:\pythonProject 8.txt #两处乱码
D:\pythonProject\08\01.txt

【2】覆盖写模式 w

1.一次性写入
# 打开当前文件并将文件内容清空并写入新内容
# 文件存在则打开,不存在则新建
data = 'opp|123'
with open('01.txt','w',encoding='utf-8') as fp:
    fp.write(data)
文件内容原为666! 覆盖后为opp|123   
2.连续写入
data = 'opp|123'
with open('01.txt','w',encoding='utf-8') as fp:
    fp.write(data)
    fp.write('asdasdsasd')
    
文件内容原为opp|123  覆盖后为 opp|123asdasdsasd

# 关闭文件后无法写入
	fp.close() # 关闭
    # 继续写入
    fp.write('9999')
    #报错
   	# I/O operation on closed file.

【3】追加写模式 a

# 文件存在则打开并写入,不存在则新建后写入
# 打开当前文件并在最后拼接写入新内容
# 不自带换行功能
data = 'opp|123'
with open('01.txt','a',encoding='utf-8') as fp:
    fp.write(data)
    fp.write('asdasdsasd')
文件内容原为opp|123asdasdsasd 追加写后变为:
opp|123asdasdsasdopp|123asdasdsasd

# 带上换行
data = 'opp|123'
with open('01.txt','a',encoding='utf-8') as fp:
    fp.write('\n'+ data + '\n')
    fp.write('asdasdsasd')
# 文件内容变为
opp|123asdasdsasdopp|123asdasdsasd
opp|123
asdasdsasd

【4】文件操作模式补充

# 【1】文本编辑模式
w / a / r
# 完整的模式应该是 
wt / at / rt
# 意思是大文本编辑模式
# 【2】二进制数据模式
wb / rb # 只能读写二进制
# 将图片转为二进制数据
with open('img.png', 'rb') as fp:
    data = fp.read()
# 将二进制数据转为图片   
with open('girl.jpg', 'wb') as fp:
    fp.write(data)
 

【5】文件操作扩展模式

r+(先有文件才能读写)/ w+ /a+
# r :只读无法写
# w:只写无法读
# 为了能又读又写
with open('01.txt', 'r+', encoding='utf-8') as fp:
    fp.write('666')
    # 写完以后需要进行持久化保存才能被读出来,否则是空的
    data = fp.read()
print(data)

文件中:666|123asdasdsasdopp|123asdasdsasd

输出:|123asdasdsasdopp|123asdasdsasd

没有读出来666

【6】文件的操作方法详细

使用追加写模式做数据准备

data = 'qwer|123'
with open('01.text','a',encoding='utf8') as fp:
    fp.write(data + '\n')

文件中:
qwer|123
qwer|123
qwer|123
qwer|123
qwer|123

【1】 r模式的方法详细

read()和readline()会将文件中的所有内容作为一个字符串返回

readlines()则是返回一个包含文件所有行的列表

# (1)一次性全读完
with open('01.text','r',encoding='utf8') as fp:
    data = fp.read()
    print(data)

qwer|123
qwer|123
qwer|123
qwer|123
qwer|123
# (2)每次只读一条
with open('01.text','r',encoding='utf8') as fp:
    data = fp.readline()
    print(data)
    
qwer|123

输出全部
with open('01.text','r',encoding='utf8') as fp:
    count = 0
    while True:
        count += 1
        data = fp.readline()
        if data:
            print(count, data)
        else:
            break
            
1 qwer|123

2 qwer|123

3 qwer|123

4 qwer|123        

5 qwer|123
# (3)一次读很多行 readlines()
# 读出来是个列表
with open('01.text','r',encoding='utf8') as fp:
    data = fp.readlines()
    print(data)
    
['qwer|123\n', 'qwer|123\n', 'qwer|123\n', 'qwer|123\n', 'qwer|123\n']
# (4)判断当前对象是否可读
# print(fp.readable())
with open('01.text','r',encoding='utf8') as fp:
    fp.close()
    print(fp.readable())
    报错
    不关闭文件时 True
# read补充
文件:1234567
with open('01.text', 'r', encoding='utf8') as fp:
    # read 可以放参数,参数是读取到哪个索引位置
    data = fp.read(4)
print(data)

1234

【2】 w写模式的方法详细

 with open('01.text','w',encoding='utf8') as fp:
# (1)将文件所有内容清空并一次性写入
    fp.write('adad')
#(2)逐个元素进行写入 写入的内容必须为可迭代类型
# fp.readlines()
    data_list = ['1','\n','2','\n','333']
    fp.writelines(data_list)

写入后:
1
2
333

【3】a追加写模式的方法详细

同w写模式

 with open('01.text','a',encoding='utf8') as fp:
# (1)将文件所有内容清空并一次性写入
    fp.write('adad')

1
2
333adad

#(2)逐个元素进行写入 写入的内容必须为可迭代类型
# fp.readlines()
    data_list = ['1','\n','2','\n','333']
    fp.writelines(data_list)

写入后:
1
2
333adadadad1
2
333

【三】控制文件指针

seek函数

# f.seek(指针移动的字节数,模式控制):
# 0模式: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
# 1模式: 该模式代表指针移动的字节数是以当前所在的位置为参照的
# 2模式: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
0模式 以文件开头为参照的
文件:你好!你好,你好。你好/你好?
with open('01.text', 'r', encoding='utf8') as fp:
    # 以开头作为参照,向后移动一个字符
    # 英文字符占一个字符位置,中文字符占三个字符位置
    # 从0开始,往右移动三个字符
    fp.seek(3,0)
    # 当前索引位置
    print(fp.tell())
    print(fp.read())
    
好!你好,你好。你好/你好?
	# 0:表示0模式,以开头为参照,用一次重置一次
    # 两次输出相同
	fp.seek(3,0)
    print(fp.tell())
    print(fp.read())
好!你好,你好。你好/你好?    
1模式 以当前位置作为参照向后移动
在Python3.x版本之后不允许在文本文件中使用
只能在二进制中使用
print(fp.read())   
fp.seek(3, 1) 
2模式 以文件末尾的位置为参照移动
# fp.seek(-2, 2)  # \x82'
    # print(fp.tell())
    # print(fp.read())

标签:fp,文件,open,qwer,123,print,操作,data
From: https://www.cnblogs.com/yi416/p/18192743

相关文章

  • 信息头文件头结构体
    内部结构BMP文件的数据按照从文件头开始的先后顺序分为四个部分:分别是位图文件头位图信息头调色板(24bt位图是没有的)位图数据(RGB)//定义BMP文件头部结构typedefstruct{unsignedshortbfType;unsignedintbfSize;unsignedshortbfReserved1;unsignedshortbf......
  • 73.undo文件迁移
    UNDO文件迁移1.开归档2.新建一个undo表空间createundotablespaceundotbs2datafile'xxxx'size1gautoextendon;3.切换表空间altersystemsetundo_tablespace='undotbs2';4.停用undoaltertablespace undotbs1offline;5.offline需要迁移的undo文件alterdat......
  • 基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览matlab2022a的测试结果如下:   vivado2019.2的仿真结果如下:   将数据导入到matlab中,   系统的RTL结构图如下图所示:   系统包括中值滤波,RGB转换为ycbcr,人脸检测三个模块 2.算法运行软件版本vivado2019.2 matlab2022a......
  • 广东各高校2023/2022/2021近三年录取分数线(excel文件下载)
    为了帮助考生更好地进行志愿填报,更好的对数据筛选,故整理广东各高校2023/2022/2021三年录取分数excel文件,部分数据及文件见下图,数据根据历年录取分数线汇总,仅供参考,详细请登陆各高校网站查询。如有需要,可根据步骤下载文件:文件列表及数据如下图所示,真实有效。关注上述公众......
  • 解决IDEA中.properties文件中文变问号(???)的问题(已解决_OK
    https://blog.csdn.net/m0_50808748/article/details/133185685问题背景构建SpringBoot项目时,项目结构中有一个application.properties文件。这个项目是SpringBoot一个特有的配置文件。内容如下(我写了一些日志的配置):写到这刚好到饭点,我打算回来吃个饭继续写,于是关闭了IDEA当我......
  • SpringBoot中使用MessageSource的getMessage获取i18n资源文件中的消息_OK
    https://www.cnblogs.com/badaoliumangqizhi/p/13608623.html 场景springboot默认就支持国际化的,而且不需要你过多的做什么配置,只需要在resources/下创建国际化配置文件即可,注意名称必须以messages开始。messages.properties(默认的语言配置文件,当找不到其他语言的配置的时候......
  • FastDFS系统支持文件迁移吗?
    大家知道,FastDFS架构是下图这样子。  大家可否知道,将一个fdfs系统里存储的文件迁移到另一个fdfs系统里,这个文件在新的fdfs系统能通过client正常访问吗?先说答案:fastdfs系统支持文件迁移。亲测为证!这一个技术点很重要,对于我们即将要做的工作来说。就是说,将一个fdfs存储服务......
  • django启动时执行某个操作数据库的方法怎么实现
    为了让django启动时就执行某些方法做了如下尝试一、在Django中,可以通过AppConfig类的ready()方法来实现在Django启动时执行某个方法。首先,在你的应用的apps.py文件中,创建一个继承自AppConfig类的子类,并重写ready()方法。例如,假设你的应用名为myapp,则可以创建一个MyAppConfig类:......
  • Pytest配置文件pytest.ini
    pytest.ini配置pytest.ini是什么pytest.ini是pytest的配置文件可以修改pytest的默认行为不能使用任何中文符号,包括汉字、空格、引号、冒号等等pytest.ini修改用例的命名规则配置日志格式,比代码配置更方便添加标签,防止运行过程报警告错误指定执行目录排除搜索......
  • pandas读取CSV文件时出现警告:DtypeWarning: Columns (2) have mixed types. Specify d
    问题描述:用pandas清洗数据时发现爆出告警,且清洗出来的数据大小格式不对DtypeWarning:Columns(2)havemixedtypes.Specifydtypeoptiononimportorsetlow_memory=False意思是第二列出现类型混乱,原因如下pandas读取csv文件默认是按块读取的,即不一次性全部读取;另外pand......