Python之文件操作

open函数

1、打开文件的方式

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

打开文件的模式有:

r , 只读模式【默认】

w, 只写模式【不可读;不存在则创建;存在则清空内容;】

x, 只写模式【不可读;不存在则创建,存在则报错】

a, 追加模式【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

r+, 读写【可读,可写】

w+,写读【可读,可写】

x+ ,写读【可读,可写】

a+, 写读【可读,可写】

 "b"表示以字节的方式操作

rb  或 r+b

wb 或 w+b

xb 或 w+b

ab 或 a+b

 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

2.操作

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 
 5 # 1. r读模式  默认
 6 # open是去找当前操作系统的编码  f句柄
 7 f = open('xxx', 'r', encoding='utf8')
 8 # data = f.read()
 9 # data = f.readable()  # 可读
10 # print('第一行', f.readline(), end='')
11 # print('第二行', f.readline())
12 # print('第三行', f.readline())  # 如果超过读出文件行数也不会报错,游标也跟着行数走,文件最后有回车换行
13 data = f.readlines()
14 print(data)
15 # 一定要关闭,不然一直占用操作系统的资源
16 f.close()
17 
18 # 2. w写模式
19 f = open('xxx1', 'w', encoding='utf8')
20 f.writable()
21 f.write('111
')
22 f.write('222
333
444
')
23 f.writelines(['555
', '666
'])   # 文件操作只能读字符串 也只能写字符串
24 f.close()
25 
26 # 3. a追加模式
27 f = open('xxx', 'a', encoding='utf8')
28 f.write('
写到文件最后')
29 
30 # 4. x只写模式 存在会报错
31 
32 # 5. 模拟文件修改
33 f = open('xxx', 'r', encoding='utf8')
34 data = f.readlines()
35 print(data)
36 f.close()
37 
38 dist_f = open('xxx', 'w', encoding='utf8')
39 dist_f.write(data[0]) # 这是删除,修改的话可以匹配字符串然后str里边的替代方式就可以修改了
40 dist_f.close()
41 
42 # 6.with操作
43 # with open('a.txt', 'w') as f:
44 #     f.write('1111
2222
')
45 # 从一个文件读出数据再写到另外一个文件中
46 with open('a.txt', 'r', encoding='utf8') as src_f, 
47         open('xxx', 'w', encoding='utf8') as dist_f:
48     data = src_f.read()
49     dist_f.write(data)
50 
51 
52 # 7.b字节模式
53 # f = open('xxx', 'rb')  # 这里不能指定编码的格式  因为已经定了字节的模式了
54 # data = f.read()
55 # print(data.decode('utf8'))
56 # print(bytes('你好', encoding='utf8'))
57 # print(bytes(b'hello')) 如果是英文直接可以用b  如果中文就必须编码 这是在写以二进制的时候
58 # 磁盘存储的字节二进制的形式   字符串---encoding--->bytes类型
59 #                             bytes---decode--->字符串
60 # f = open('xxx', 'wb')
61 # f.write('中国'.encode('utf8'))
62 
63 # f = open('xxx', 'ab')
64 # f.write('中国
'.encode('utf8'))
65 
66 # f = open('xxx', 'ab')
67 # f.write('中国
'.encode('utf8'))
68 
69 f = open('xxx', 'r', encoding='utf8', newline='')
70 data = f.read()
71 print(data.encode('utf8'))
72 # b'xe4xb8xadxe5x9bxbd
xe4xb8xadxe5x9bxbd

' python默认windows
换行newline 
换行
73 # f.tell()  # 当前光标位置
74 # f.seek()  # 光标位置方式  0 1 2三种方式  0代表从文件第一个字节 (1,2必须是b模式下)1代表正向 2代表倒序
75 # f.flush() # 刷新 这样就可以从内存的字节 保存到磁盘中
76 # f.truncate() # 截断 这是写的模式
77 # f.isatty()   # 判断文件是否是同意tty设备
78 # f.next()     # 获取下一行数据,不存在,则报错
79 # 文件内光标移动:文件打开方式b模式代表读取3个字节  其余文件内光标移动都是以字节为单位如seek tell truncate
open,with
原文地址:https://www.cnblogs.com/Alexephor/p/11193948.html