Python之路_基础_04_文件操作

1、打开文件

  得到文件句柄并赋值给一个变量
f=open("文件名","权限",encoding="utf-8")

 

2、通过句柄对文件进行操作

  f.read([size]) #从文件读取指定的字节数,如果未指定或者负数则读取所有
f=open("sing","r",encoding="utf-8")
f_r=f.read()
print(f_r)
f.close()
  f.readline([size]) #读取整行,包括\n字符
  循环读取文件内容:
#打开文件
f=open("sing","r",encoding="utf-8")
print("文件名为:",f.name)
line=f.readline()
print("读取的第一行为:%s"%(line))
line=f.readline(5)
print ("读取的字符串为: %s" % (line))
#关闭文件
f.close()

  运行结果:

文件名为: sing
读取的第一行为:塞纳河畔 左岸的咖啡

读取的字符串为: 我手一杯
  f.readlines([sizeint])
  #读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要 填充缓冲区

# 打开文件
fo = open("sing", "r",encoding="utf-8")
print("文件名为: ", fo.name)

for line in fo.readlines():  # 依次读取每行
    line = line.strip()  # 去掉每行头尾空白
    print("读取的数据为: %s" % (line))

# 关闭文件
fo.close()

3、关闭文件

  f.close()
 

4、seek()方法

  用于移动文件读取指针到指定位置
  语法:
    fileObject.seek(offset[,whence])
  参数说明:
    offset ->开始的偏移量,代表需要偏移的字节数
    whence ->可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

# 打开文件
fo = open("sing", "r+",encoding="utf-8")
print ("文件名为: ", fo.name)

line = fo.readline()
print ("读取的数据为: %s" % (line))

# 重新设置文件读取指针到开头
fo.seek(0, 0)
line = fo.readline()
print ("读取的数据为: %s" % (line))


# 关闭文件
fo.close()

5、tell()方法

  返回文件的当前位置,即文件指针当前位置
  语法:
    fileObject.tell(offset[,whence])

# 打开文件
fo = open("sing","r+",encoding="utf-8")
print ("文件名为: ", fo.name)

line = fo.readline()
print ("读取的数据为: %s" % (line))

# 获取当前文件位置
pos = fo.tell()
print ("当前位置: %d" % (pos))

# 关闭文件
fo.close()

6、flush()方法

  用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
  使用场景:
    一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
  语法:
    fileObject.flush()
  进度条例子:

import sys,time

for i in range(20):
    sys.stdout.write("#")
    sys.stdout.flush()
    time.sleep(0.1)

7、write()

  向文件写入指定的字符串。
  在文件关闭前或缓冲区刷新前,字符串内容存在缓冲区中,这时你在文件中是看不到写入的内容的。
  语法:
  filieObject.write( [ str ] )

# 打开文件
fo = open("test.txt", "r+",encoding="utf-8")
print ("文件名: ", fo.name)

str = "5:www.oldboy.com"
# 在文件末尾写入一行
fo.seek(0, 2)
line = fo.write( str )

# 读取文件所有内容
fo.seek(0,0)
for index in range(5):
    line = next(fo)
    print ("文件行号 %d - %s" % (index, line))

# 关闭文件
fo.close()

8、writelines()

  用于向文件中写入一序列的字符串
  这一序列字符串可以由迭代对象产生的,如一个字符串列表,换行需要制定换行符\n
  语法:
  fileObject.writelines( [ str ] )

# 打开文件
fo = open("test.txt", "w",encoding="utf-8")
print ("文件名为: ", fo.name)
seq = ["菜鸟教程 1\n", "菜鸟教程 2"]
fo.writelines( seq )

# 关闭文件
fo.close()

文件操作——增删改查

r+        #读写
w+        #写读
a+        #追加读写
rb        #二进制文件,比如打开视频文件
U        #可以将\r \n  \r\n自动转换成\n

with语句:

  为了避免打开文件后忘记关闭,可以通过管理上下文
  语法:
  with open('log','r') as f
  当with代码块执行完毕时,内部会自动关闭并释放文件资源

转载于:https://www.cnblogs.com/cz-cangfeng/articles/8143735.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值