python_文件操作

读:  

1 f=open("骗自己",'r',encoding='utf8') #打开指定文件,获取文件句柄 “f=open("/路径/文件名",'操作模式',encoding='指定编码格式')” r:为只读模式
2 data=f.read()   #读取全部内容
3 #data=f.read(10)    #读取n(10)个字节 (read方法认为一个中文也是一个字节,就是这么牛掰)
4 print(data)
5 print(f.readline().strip()) # readline方法可以输出一行,print输出默认会输出一个换行,加strip()方法是清除print的换行,光标在哪就从那开始输出
6 print(f.readlines()) #以列表的形式输出文件的所有内容,
7 f.close() #关闭文件 (python默认会自动执行关闭操作,但还是要自己指定一下.因为老百姓有句名言,信自己得永生)

readlines()方法读取所有内容,并在第六行添加注释:

1 f=open("骗自己",'r',encoding='utf8')
2 data=f.readlines()
3 f.close()
4 for i,n in enumerate(data):
5     if i == 6:
6         n="".join([n.strip(),"#这一句我不会唱"])
7     print(n.strip())

readlines()方法为把文件里所有内容都放到内存中,然后一起读出来,对于大文件而言对性能会有极大的影响,不建议使用

读大文件是建议使用下边的方法:

1 f=open("骗自己",'r',encoding='utf8')
2 for i in f:
3     print(i.strip()

单独输出 f 是一个内存对象:<_io.TextIOWrapper name='骗自己' mode='r' encoding='utf8'>
python中 for 语句对读取内存对象做了迭代器的处理,(迭代器:使用一行,加载一行,删除后再继续加载下一行)

  能调用方法的一定是对象

          ---- alex的徒弟说让记住这句话

写:

1 f=open("骗自己",'w',encoding="utf8") #w:为只写模式,如果文件不存在则会创建,如果文件中有内容会将其清空
2 f.write("如果有天自己变的很有钱")   #写入到内存
3 f.write("\n我的第一选择不是去环游世界") #\n为换行符,python默认是不会跟你加的,因为一个内存块默认为4k...而写入内容的时候会根据光标所在位置进行写入...算了,你懂就好
4 f.close()   #关闭文件,并将内存中的内容加载到磁盘中

追加:

1 f=open("骗自己",'a',encoding='utf8') #a:为追加模式,如果文件不存在则会创建,调动光标到文件末尾
2 f.write("躺在世界上最大最软的沙发里")  #写入到内存
3 f.write("\r吃了就睡醒了再吃先过一年")   #\r也TMD是换行符,很强
4 f.close()   #关闭文件,并将内存中的内容加载到磁盘中

 

读、写、追加的升级版:

 1 f=open("骗自己",'r+',encoding='utf8')        # r+:读写模式
 2 print(f.readline())                 # 读取光标所在的那一行
 3 f.write("---------------------")        # 写的操作会追加在文件末尾
 4 
 5 f=open("骗自己",'w+',encoding='utf8')       # w+:写读模式,文件不存在则创建,文件存在则清空文件内容
 6 f.write("---------------------")           # 写的操作会追加在文件末尾
 7 print(f.seek(0))
 8 print(f.readline())                        # 写完后光标在文件末尾,所以内容读取不到,需要将光标移动到0的位置才可以读的到
 9 
10 f=open("骗自己",'a+',encoding='utf8')     # a+:追加读,光标会直接调整的末尾
11 print(f.readline())                        #光标在默认,直接读没有内容
12 f.write("-------------")                   #写的内容会直接追加到文件末尾

其他操作:

1 print(f.tell())  #tell()方法获取当前光标的位置
2 f.seek(5)        #指定光标的位置
可以用作断点续传

3 f.flush() #将缓存中的内容直接刷新到内存中

猜你喜欢

转载自www.cnblogs.com/Adairye/p/8927830.html