文件(二)open()read()readline()readlines()write()writelines()close() flush()remove()tell()seek()with-as

这篇博客详细介绍了Python中的文件操作,包括open()函数用于打开文件,文件读取的方法如read(), readline(), readlines(),文件写入的write()和writelines(),以及如何使用close()关闭文件和remove()删除文件。同时强调了不关闭文件可能带来的问题,特别是影响写入操作。此外,还讨论了文件指针的概念。" 69499762,6564019,Flume从MySQL到Kafka数据迁移实战与问题解决,"['数据集成', 'flume', 'kafka', 'storm', '数据库迁移']
摘要由CSDN通过智能技术生成

一、open()

file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]])
file:表示要创建的文件对象。
file_name:要创建或打开文件的文件名称,该名称要用引号(单引号或双引号都可以)括起来。
	如果要打开的文件和当前执行的代码文件位于同一目录,则直接写文件名即可;
	否则,此参数需要指定打开文件所在的完整路径。
	
mode:可选参数,用于指定文件的打开模式。如果不写,则默认以只读(r)模式打开文件,文件不存在会报错

buffering:可选参数,用于指定对文件做读写操作时,是否使用缓冲区(本节后续会详细介绍)
	buffing = 0(或者 False),则不使用缓冲区
	buffing 参数值为大于 1 的整数,该整数用于指定缓冲区的大小(单位是字节);
	buffing 参数值为负数,使用默认的缓冲区大小
	
encoding:手动设定打开文件时所使用的编码格式,不同平台的 encoding 的默认参数值也不同
	以 Windows 为例,其默认为 cp936(实际上就是 GBK 编码)
	可以在使用 open() 函数时,手动指定打开文件的编码格式,例如:
	file = open("a.txt",encoding="utf-8")

	注意,手动修改encoding 参数的值,仅限于文件以文本(r等)的形式打开,
	也就是说,以二进制格式(rb等)打开时,不能对 encoding 参数的值做任何修改,
	否则程序会抛出 ValueError 异常,如下所示:
	ValueError: binary mode doesn't take an encoding argument'
	同时以为rb等打开的文件也不能访问encoding属性 否则报错
	AttributeError: '_io.BufferedReader' object has no attribute 'encoding'

>>> f=open('H:\\CSprogramsP\\LeetCode\\回文链表.cpp','r')
>>> print(f.encoding)
cp936
>>> f=open(r'H:\CSprogramsP\LeetCode\回文链表.cpp')
>>> print(f.encoding)
cp936

>>> f=open('H:\\CSprogramsP\\LeetCode\\回文链表.cpp','rb',encoding='uft-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: binary mode doesn''t take an encoding argument’

>>> f=open('H:\\CSprogramsP\\LeetCode\\回文链表.cpp','rb')
>>> print(f.encoding)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: '_io.BufferedReader' object has no attribute 'encoding'


注意encoding是说调用open打开文件时采用的编码方式 而不是说这个文件原本的编码方式

	通常情况下、建议大家在使用 open() 函数时打开缓冲区,即不需要修改 buffing 参数的值。
	内存的 I/O 速度仍远远高于外设(例如键盘、鼠标、硬盘等)的 I/O 速度,如果不使用缓冲区,
	则程序在执行 I/O 操作时,内存和外设就必须进行同步读写操作,
	也就是说,内存必须等待外设输入(输出)一个字节之后,才能再次输出(输入)一个字节。
	这意味着,内存中的程序大部分时间都处于等待状态。
	而如果使用缓冲区,则程序在执行输出操作时,会先将所有数据都输出到缓冲区中,
	然后继续执行其它操作,缓冲区中的数据会有外设自行读取处理;
	同样,当程序执行输入操作时,会先等外设将数据读入缓冲区中,无需同外设做同步读写操作。

在这里插入图片描述
在这里插入图片描述

Windows下关于python文件打开时SyntaxError  OSError文件路径异常

SyntaxError: (unicode error) 'unicodeescape' codec cannot decode bytes 
in position 2-3: truncated \UXXXXXXXX escape
OSError: [Errno 22] Invalid argument: 'C:\\Users\\cy\\Desktop\x07.txt'

文件路径
要么统一使用双反斜杠,(可+r也可不+r,推荐不+r)
	>>> f=open(r'C:\\Users\\cy\\Desktop\\a.txt','r')
	>>>> f=open('C:\\Users\\cy\\Desktop\\a.txt','r')  推荐
要么统一使用单但斜杠+r,(必须+r)
	>>> f=open('C:\Users\cy\Desktop\a.txt','r')
	  File "<stdin>", line 1
	SyntaxError: (unicode error) 'unicodeescape' codec cannot decode bytes 
	in position 2-3: truncated \UXXXXXXXX escape
	>>> f=open(r'C:\Users\cy\Desktop\a.txt',
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值