文件操作

打开文件的模式有:

  • 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 open('log','r') as f:

     

    ...

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

1

2

with open('log1') as obj1, open('log2') as obj2:

    pass

 

#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个字符长度
'''

 

'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值