python文件操作指南

讲解一下python文件操作命令,主要有读写文件,文件移动复制删除等等

1. 读写文件

1.1 open-close
缺点是,如果在文件执行过程中发生了异常,不能正确关闭文件

### 写文件
foo = open("filename","w") // 以写的方式打开文件,如果文件不存在则创建新文件,如果文件存在则重写文件(默认“r” mode)
foo.close("ddd".ljust(6))  // 向文件内写入内容,左对齐6个字符。 rjust,右对齐
foo.close()  // 关闭文件
### 读文件
foo = open("filename","r") //只读方式打开
for line in foo:
	print(line)  // 打印文件的每一行
foo.close()

1.2 with-open
这个的好处是,及时在执行过程中遇到了文件异常,也可以正确关闭文件

with open("filename" "r") as foo:
	lines = foo.read(size) # size 为需要读取的字节,默认全部读入
	print(lines)
	lines = foo.readline(size) ## 依次读取一行,尾行返回空。 会记录行地址,重复该命令会依次读取行
	lines = foo.readlines(size) ## 读取所有行,返回一个行为元素的列表。会记录字节地址,重复该命令会继续读取

如下几处append引用自如下链接:
python file 方法https://www.runoob.com/python/file-methods.html

append1
完整的语法格式为:
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符

append2

  • t 文本模式 (默认)。
    x 写模式,新建一个文件,如果该文件已存在则会报错。
    b 二进制模式。 + 打开一个文件进行更新(可读可写)。
    U 通用换行模式(不推荐)。
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
    w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

append3

  • open之后对句柄操作的函数有
    foo.seek() 设置文件当前位置
    foo.truncate(size) 从当前位置截取size长度
    foo.next() 下一行
    foo.tell() 返回文件当前位置,字节位置
    foo.writeline(seq) 写入一个字符串列表
    foo.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入

2. 操作文件

2.1 os函数

import os
os.rename("oldfilename","newfilename") ## 重命名
os.remove("filename")	## 删除
os.mkdir("dir")	## 创建文件夹
os.rmdir(dir)	## 删除文件夹
os.getcwd() ## 当前目录
os.chdir("dir") ## 改变默认目录
os.listdir("dir") ## 获取目录下文件,返回一个列表

2.2 shutil函数

import shutil
shutil.copy("oldfile","newfile") ## 复制,不保留时间戳等元数据
shutil.copy2("oldfile","newfile") ## 保留时间戳
shutil.copyfile("oldfile","newfile") ## 源文件内容复制到新文件中
shutil.copyfileobj(open("oldfile",'r'),open("newfile",'w')) ## 文件内容写入
shutil.copytree("olddir","newdir") ## 复制文件目录
shutil.rmtree("dir") ## 删除目录
shutil.move("olddirfile","newdirfile") ## 移动文件/文件夹
shutil.which("command") ## 获取命令字符串安装位置 如command=python
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值