day8

文件操作初始:

文件路径:d:xxxx.txt     

编码方式:utf - 8,gbk,GB2312...

操作方式:只读,只写,写读,读写,追加等。

 f = open('d:文件操作.txt',encoding='utf-8',mode='r')
 content = f.read()
 print(content)
 f.close()

 f.变量f_obj,f_handler,f_h,fh,文件句柄

  open()是python的内置函数(内部调用的是Windows的系统命令)

1,打开文件,产生文件句柄

2,对文件句柄进行操作

3,关闭文件句柄 

当文件路径过多层时,有两种方法

  1.在路径的最前面

  2.每个变成\

绝对路径:d:xxxxxx.txt,从根目录开始找

相对路径:当前目录,当前文件夹

读:

  r: 对于r模式,mode可以默认不写

 f = open('d:文件操作.txt',encoding='GB2312',mode='r')
content = f.read()
print(content)
f.close()

 还可以在当前文件夹中新建

 f = open('文件操作1',encoding='utf-8',mode='r')
content = f.read()  #
 print(content)
f.close()

 此方法是一次性全部读取,对于文件小的可以用,但是大型操作的不能直接read全部而是用下面的方法。

read(n):r模式下,按照字符读取

 f = open('文件操作1',encoding='utf-8',mode='r')
 content = f.read(10)  # r 模式,按照字符读取。
 print(content)
 f.close()

readline() :r模式下,按行读取数据

 f = open('文件操作1',encoding='utf-8',mode='r')
 print(f.readline()) 
 print(f.readline()) 
 print(f.readline()) 
 print(f.readline()) 
 print(f.readline()) 
 print(f.readline()) 
 f.close() 

按行读取,返回一个list

 f = open('文件操作1',encoding='utf-8',mode='r')
 content = f.readlines()
 print(content)
 f.close()

 for循环

 f = open('文件操作1',encoding='utf-8',mode='r')
for line in f:
     print(line.strip())
 f.close()

rb:文件操作中,凡是带b字母,都是与非文字类文件相关的,rb,wb.ab.....

f = open('美女1.jpg',mode='rb')
content = f.read()
print(content)
f.close()

 也可以按照字节读取,一个中文三个字节

 f = open('文件操作1',mode='rb')
 content = f.read(9)  # rb 模式 n 按照字节读取。
 print(content)
 f.close() 

r+ 读写:先读后追加

f = open('文件操作1',encoding='utf-8',mode='r+')
content = f.read()
print(content)
f.write('666')
f.close()

或者设定从那个地方开始读取,read(3)就是只读取三个字符

 f = open('文件操作1',encoding='utf-8',mode='r+')
 content = f.read(3)
 print(content)
 f.write('666')
 f.close() 

不读直接写会直接从开始覆盖

 f = open('文件操作1',encoding='utf-8',mode='r+')
 f.write('深圳你好')
 f.close()

写,w:没有文件,创造文件也要写,有文件,先清空,后写入

 f = open('文件操作2', encoding='utf-8',mode='w')
 f.write('深圳市南山区,福田区,罗湖区。。。')
 f.close()  

wb,读写,把 ‘美女1.JPG’ 读取然后写到 ‘美女2.JPG’

 f = open('美女1.jpg',mode='rb')
 content = f.read()
 print(content)

 f1 = open(' 美女2.jpg',mode='wb')
 f1.write(content)
 f.close()
 f1.close() 

w+:写读

 f = open('文件操作2', encoding='utf-8',mode='w+')
 f.write('深圳市南山区,福田区,罗湖区。。。')
 f.seek(3)  # 调整光标
 content = f.read()
 print(content)
 f.close()

追加:

a:没有文件,创建文件也要写,有文件直接在后面追加

 f = open('文件操作3', encoding='utf-8',mode='a')
 f.write('
南方水土好。。。')
 f.close()

其他方法:readale,writable,seek

 f = open('文件操作1',encoding='utf-8')
 if f.writable():
     content = f.read()
     print(content)
 f.close()

 seek:调整光标到开始,seek(0)调整光标到结尾seek(0,2)

 f = open('文件操作1',encoding='utf-8')
 f.seek(6) # 按照字节去移动光标
 content = f.read()
 print(content)
 f.close()
 f = open('文件操作1',mode='rb')
 print(f.read())
 f.seek(6) # 按照字节去移动光标
 content = f.read()
 print(content)
 f.close()

tell告知光标的位置

 f = open('文件操作1',encoding='utf-8')
 f.seek(0,2) # 按照字节去移动光标
 print(f.tell())
 f.close()

truncate 要在writable模式下进行截取

r + a+...不能在w模式下使用,对原文进行截取

 f = open('文件操作1',encoding='utf-8',mode='r+')
 print(f.truncate(6))
 f.close()

主动关闭文件句柄:

 with open('文件操作2',encoding='utf-8') as f1:
     print(f1.read())

开启多个文件句柄:

 with open('文件操作2',encoding='utf-8') as f1,
         open('文件操作3',encoding='utf-8',mode='w') as f2:
     print(f1.read())
     f2.write('666666')

文件的改的操作:

  1.以只读模式打开原文件,产生一个文件句柄f1.

  2.以写的模式创建一个新文件,产生一个文件句柄f2

  3.读取原文件内容,进行修改,并将修改后的写入新文件

  4.将原文件删除

  5.将新文件重命名成原文件

import os
with open('alex的深度剖析', encoding='utf-8') as f1,
    open('alex的深度解析.bak',encoding='utf-8',mode='w') as f2:
    for line in f1:
        new_line = line.replace('SB','alex')
        f2.write(new_line)
os.remove('alex的深度剖析')
os.rename('alex的深度解析.bak', 'alex的深度剖析')

  

原文地址:https://www.cnblogs.com/beriuta/p/9469120.html