首页 > 代码库 > python基础:文件
python基础:文件
文件
打开文件
open()函数
#获取文件句柄
f=open("D:\haha.txt")
#读取文件数据
data=http://www.mamicode.com/f.read()>
f 又叫文件句柄,它包含文件的文件名、文件的字符集、文件的大小、文件在硬盘上的起始位置
若想再次读文件,实际是不可以的。因为在文件中 ,维护一个类似文件指针的一个东西,这个文件指针类似于我们平时操作文件时的光标的东西,所以当第1次读文件时,文件指针已经指向最后一个位置,所以第2次再去读取的时候,是从最后一个位置开始读取的,所以读取的为空。那怎么再重新读取数据?把光标移动到开始位即可。
文件的打开模式
只写
(1)w :覆盖原有内容
(2)a: 在末尾追加写入,不覆盖原有内容
只读
read()读全部
f=open("D:\haha.txt","r",encoding="utf-8")
data=http://www.mamicode.com/f.read()
print(data)
>>>
aaaa ppppp
bbbb
cccc
dddd
eeee
ffff
readline() 只读一行
f=open("D:\haha.txt","r",encoding="utf-8")
data=http://www.mamicode.com/f.readline()
print(data)
>>>
aaaa ppppp
readlines()读取全部,把文件中的每一行作为一个元素形成一个列表
f=open("D:\haha.txt","r",encoding="utf-8")
data=http://www.mamicode.com/f.readlines()
print(data)
>>>
[‘aaaa ppppp\n‘, ‘bbbb\n‘, ‘cccc\n‘, ‘dddd\n‘, ‘eeee\n‘, ‘ffff\n‘]
应用:
1、读前几行
f=open("D:\haha.txt","r",encoding="utf-8") for i in range(5): data = http://www.mamicode.com/f.readline()>>>>
aaaa ppppp
bbbb
cccc
2、第3行内容不显示,用---***---代替
for j,k in enumerate(f.readlines()):
if j==2:
print("---***---")
continue
print(k)
>>>输出
aaaa ppppp
bbbb
---***---
dddd
eeee
ffff
以上f.readlines()已经先把文件读到内存,然后再循环。文件小无所谓,但是文件大时,就得等很久,而且会容易把内存撑爆。
改变该方式的方法:读一行,存一行,打印一行。
虽然达到读取文件的的目的,但是都是将内容读取到内存中,若文件小则无所谓,但是对于大文件,比如200G,则内存会被,所以不适合。读一行,存一行。打印一行,只保存一行内容到内存中。
迭代取文件内容:
for i in f: print(i) >>> aaaa ppppp bbbb cccc dddd eeee ffff
文件修改
文件修改思路2种,如下:
第一个 vim: 把文件内容先全都加载到内存里,修改的时候是在内存里修改的。这种情况不需要新建文件。但是文件如2g一样大,就会有问题
第二个 打开文件修改完了,加载到新文件里。
思路:边读边写,如果该行不是需要修改的,就直接写到新文件里,如果该行是需要修改的,就先修改,修改完了再写到新文件 里
# -*- coding:utf-8 -*-
f=open("yes.txt",‘r‘)
f_new=open("yes_new.txt","w")
for line in f:
if "太阳" in line:
line=line.replace("太阳","sun")
f_new.write(line)
>>>>>>>>>>
我爱北京天安门
天安门上sun升
毛主席
python基础:文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。