python 文件操作
python 文件操作:
打开文件
读写文件
myfile = open(包含文件名的文件路径,打开权限)
会返回一个文件对象
文件都是在磁盘上的,我们需要把他放到内存中,
str = read(num) 读取文件放到字符串变量中 其中的num 就是要读取的字节数 不填为全读
seek()函数 ,修改访问文件位置.
file.seek(offset[,whence])
offset:偏移量
whence:从哪里
0表示从头开始计算,
1表示以当前位置为原点计算
2表示以文件末尾为原点进行计
需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
myfile.seek(0,0) #回到了文件的开头
#如果说你操作到了一个文件没有的位置,那么
# ValueError: negative seek position -1
在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常
#io.UnsupportedOperation: can't do nonzero end-relative seeks
#b模式 binary 二进制打开文件
str = readline() 顾名思义 读取一行,把内容放到一个字符串变量中
Read until newline or EOF.
直到读到一个新行,或者EOF , EOF是文件结束的标志
#while (file !=EOF)
换行符的几个版本:
\n 类Unix
\r\n windows
\r 老版本的mac os
myfile.tell() 用来返回当前读取文件的指针位置
ell() method of _io.TextIOWrapper instance
Return current stream position.
strlist = readlines(size) 读取整个文件到字符串列表
字符串列表: [‘abc’,’cde’,’abasd’]
每次调用 readlines(size) 函数,会返回大约 200MB 的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 size 指定的值大一点(除最后一次调用 readlines(size) 函数的时候)。通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍
这个函数内部也就是通过循环调用readline()来实现的
确保一行:Read until newline or EOF.
pandas 熊猫们 python库 数据分析 大数据
\n \t \v \r空格不可见字符
>>> mystr = 'abc\n'
>>> mystr
'abc\n'
>>> mystr.strip()
'abc'
>>> mystr
'abc\n'
----------------------------------------------以上是python的读操作------------------------------------------------------
myfile.write(‘str’):在文件中写入字符串
当你使用写模式打开文件的时候,会将文件之前的内容清空掉,截断。
缓冲区:
当你从输入设备或者之后用一些重定向,写文件的方式,给磁盘上的文件写内容的时候,其实是写到了缓冲区中,缓冲区有大小,
1、 当缓冲区满了之后,我们写的数据,才会真正的到达磁盘文件
2、 我们可以使用 myfile.flush() 用来刷新缓冲区,
3、 关闭文件,也会刷新缓冲区。
IO流 向屏幕输出, 向文件输入 黑盘:对于数据在磁盘上的重复读写 ,普通硬盘
1、python中的写操作不会默认给你追加换行符
2、python中的写不会覆盖之前的内容,只有我们重新打开文件在使用 w 模式的时候,文件内容才会被覆盖
myfile.writelines()
在文件中可以写入一个字符串元组或者是字符串列表
如果列表或者元组中 不是字符串:
TypeError: write() argument must be str, not int
writelines == readlines
他都是用write 和 readline 使用for循环的方式来实现的
with as 和open的区别
with as会自动帮你做内存释放工作,
open不会