3 文件操作

Posted 滴水可以穿石

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3 文件操作相关的知识,希望对你有一定的参考价值。

 

一 文件操作

1 文件路径

2 编码方式:utf-8

3 动作mode:读 ,读写,写读..

例子:第一种写法:

 1 # f1 = open(\'D:\\a.txt\', encoding=\'utf-8\', mode=\'r\')
 2 # content = f1.read()
 3 # print(content)
 4 # f1.close()
 5 
 6 
 7 f1,文件句柄,文件对象,file,f_handle,file_handle,f_obj
 8     open打开的指令,windows的指令,
 9     windows 默认编码方式gbk,linux默认编码方式utf-8,mac utf-810 
11 
12  1,打开文件,产生文件句柄。
13     2,操作文件句柄。
14     3,关闭文件。

第二种写法:

# with open(\'log1\',encoding=\'utf-8\',mode=\'r\') as f1:
#     print(f1.read())
#     f1.close()

 

二 文件的打开模式

 1 #1. 打开文件的模式有(默认为文本模式):
 2 r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
 3 w,只写模式【不可读;不存在则创建;存在则清空内容】
 4 a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】
 5 
 6 #2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
 7 rb 
 8 wb
 9 ab
10 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
11 
12 #3,‘+’模式(就是增加了一个功能)
13 r+, 读写【可读,可写】
14 w+,写读【可写,可读】
15 a+, 写读【可写,可读】
16 
17 #4,以bytes类型操作的读写,写读,写读模式
18 r+b, 读写【可读,可写】
19 w+b,写读【可写,可读】
20 a+b, 写读【可写,可读】

1 r+详细解释:读写

下面这个是新写入的东西不会被打印出来
1
# f1 = open(\'log1\', encoding=\'utf-8\', mode=\'r+\') 2 # print(f1.read()) 3 # f1.write(\'666\') 4 # f1.close()

这个是可以打印出来刚写完后的内容

# f1 = open(\'log1\',encoding=\'utf-8\',mode=\'r+\')
# f1.seek(0,2)   ##把光标调整到最后,然后再去写,原来的内容不会被覆盖
# f1.write(\'aaaaaaaaaaaa\')
# f1.seek(0) ##然后把光标调整到最前面,再去读
# print(f1.read())
# f1.close()

2 w只写,默认会清空之前的内容

# f1 = open(\'log2\', encoding=\'utf-8\', mode=\'w\')
# f1.write(\'abc是披着高富帅外衣的纯屌丝.....\')
# f1.close()

wb模式

# f1 = open(\'log2\', mode=\'wb\')
# f1.write(\'alex是披着高富帅外衣的纯屌丝.....\'.encode(\'utf-8\'))
# f1.close()

w+写读模式

1 # f1 = open(\'log2\', encoding=\'utf-8\', mode=\'w+\')
2 # print(f1.read())
3 # f1.write(\'666\')
4 # f1.close()

a追加和a+(可写,可读)

 1 # f1 = open(\'log2\', encoding=\'utf-8\', mode=\'a\')
 2 # f1.write(\'\\n老男孩\')
 3 # f1.close()
 4 
 5 #a+可写可读
 6 # f1 = open(\'log2\', encoding=\'utf-8\', mode=\'a+\')
 7 # f1.write(\'fdsafdsafdsagfdg\')
 8 # f1.seek(0)
 9 # print(f1.read())
10 # f1.close()

三 文件的改

#1,打开原文件,产生文件句柄。
#2,创建新文件,产生文件句柄。
#3,读取原文件,进行修改,写入新文件。
#4,将原文件删除。
#5,新文件重命名原文件。

1 import os
2 with open(\'file_test\', encoding=\'utf-8\') as f1,\\
3     open(\'file_test.bak\', encoding=\'utf-8\', mode=\'w\') as f2:
4     for line in f1:
5         new_line = line.replace(\'SB\',\'alex\')
6         f2.write(new_line)
7 os.remove(\'file_test\')
8 os.rename(\'file_test.bak\',\'file_test\')

四 文件的其他操作

#read read(n) readline() readlines() write() close  readable  writable

 1 # read 全部读出
 2 # f1 = open(\'log1\', encoding=\'utf-8\')
 3 # content = f1.read()  #
 4 # print(content)
 5 # f1.close()
 6 
 7 
 8 #read(n)
 9 # f1 = open(\'log1\', encoding=\'utf-8\')
10 # content = f1.read(5)  # r 模式 按照字符读取。
11 # print(content)
12 # f1.close()
13 
14 # f1 = open(\'log1\', mode=\'rb\')
15 # content = f1.read(3)  # rb模式 按照字节读取。
16 # print(content.decode(\'utf-8\'))
17 # f1.close()
18 
19 #readline()按行读取 读几行,下面写几行
20 # f1 = open(\'log1\', encoding=\'utf-8\')
21 # print(f1.readline())
22 # print(f1.readline())
23 # print(f1.readline())
24 # print(f1.readline())
25 # f1.close()
26 
27 
28 #readlines() 将每一行作为列表的一个元素并返回这个列表
29 # f1 = open(\'log1\', encoding=\'utf-8\')
30 # print(f1.readlines())
31 # f1.close()
32 
33 
34 #for循环
35 # f1 = open(\'log1\', encoding=\'utf-8\')
36 # for i in f1:
37 #     print(i)
38 # f1.close()
文件读取方式

tell指针

1 #tell 告诉指针的位置
2 # f1 = open(\'log2\', encoding=\'utf-8\', mode=\'w\')
3 # f1.write(\'fdsafdsafdsagfdg\')
4 # print(f1.tell())
5 # f1.close()
6 #seek(参数),seek(0,2) 调至最后 按照字节去调整光标

五 编码转换

1 # s1 = b\'\\xd6\\xd0\\xb9\\xfa\'
2 # s2 = s1.decode(\'gbk\')
3 # s3 = s2.encode(\'utf-8\')
4 # print(s3)  # b\'\\xe4\\xb8\\xad\\xe5\\x9b\\xbd\'
5 # s1 = b\'\\xd6\\xd0\\xb9\\xfa\'.decode(\'gbk\').encode(\'utf-8\')
6 # print(s1)

以上是关于3 文件操作的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode 如何操作用户自定义代码片段(快捷键)

操作栏标签片段中的片段?

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全