打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab
with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
1 2 3 |
|
如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
1 2 |
|
#data = open('yesterday', encoding='utf-8').read()
f = open('yesterday', 'r', encoding='utf-8') # 文件句柄(文件内存对象)
'''
-a append追加(不覆盖原文件内容) -r read(读文件) -w write(写,覆盖原文件内容)
-r+读写(以读和追加写的形式打开文件) -w+写读模式,创建新文件进行写读
-a+ 追加读写模式
f=open('yesterday2', 'rb') #文件句柄 二进制文件读(视频文件,网络传输) 二进制模式不能传encoding参数
print(f.read())
f=open('yesterday', 'wb') #文件句柄 二进制文件写
f.write('hello binary\n'.encode(encoding='utd-8'))
f.close()
'''
data = f.read()
print(data.strip())
'''
f_2 = open('yesterday2', 'a', encoding='utf-8')
f_2.write("when i was young i listen to the radio\n")
f_2.write('我爱北京天安门\n')
f_2.write('天安门上太阳升')
f_2 = open('yesterday', 'r', encoding='utf-8')
count = 0
for line in f_2:
if count == 1:
print('我是分割线'.center(20, '-'))
count += 1
continue
print(line)
count += 1
'''
f.close()
#f_2.close()
#(low loop只适合小文件)
f = open('yesterday', 'r', encoding='utf-8')
for index, line in enumerate(f.readlines()):
if index == 9:
print('我是分割线'.center(20, '-'))
continue
print(line.strip())
for i in range(5):
print(f.readline())
#(high loop)
count = 0
for line in f:
if count == 9:
print('我是分割线'.center(20, '-'))
count+=1
continue
count+=1
print(line)
'''
#进度条.py
import sys
import time
for i in range(20):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(1)
'''
'''
#天安门.py
f_2 = open('yesterday2', 'r', encoding='utf-8')
count = 0
for line in f_2:
if count == 1:
print('我是分割线'.center(20, '-'))
count += 1
continue
print(line.strip())
count += 1
print('我是分割线'.center(20, '-'))
f_2.close()
f = open('yesterday2', 'r', encoding='utf-8')
print(f.tell())
print(f.readline())
print(f.tell())
print(f.read(5))
print(f.tell())
f.seek(0)
print(f.readline())
print(f.encoding) # 打印编码方式
print(f.fileno()) # 打印操作系统用于打开该文件的接口编号
print(f.name) # 打印文件名字
print(f.isatty()) # 如果文件链接的是一台终端设备返回True
print(f.seekable()) # 打印该文件对象是否支持随机访问,若不支持,seek()、tell()和truncate()会报错
print(f.readable()) # 判断文件是否可读
print(f.writable()) # 判断文件是否可写
#f .flush() //强制刷新内存缓冲区(默认是等缓冲区满在刷新)
'''
f=open('yesterday', 'a', encoding='utf-8')
f.seek(20) #移动不好使
f.truncate(10) #从文件开始位置截断10个字符长度
'''
'''