Python入门之文件操作

# 文件
# 操作流程:打开-》读写-》关闭

# 打开文件  open(filename, mode)
# 模式种类有:r 、w 、a,默认模式为r,
# 在模式后面增加b,则为操作二进制文件,如"rb"
# 在模式后面增加+,则文件以读写模式打开,如"r+"、"rb+"等
# r模式:以只读方式打开文件,文件的指针放在文件的开头,当文件不存在时会报错
f = open("a.txt", "r")
content = f.read()   # 读取文件内容
print(content)
# w模式:以只写方式打开文件,文件的指针放在文件的开头,当文件不存在时会创建一个新的文件
f = open("a.txt", "w")
content = f.write("abcd")   # 将"abcd"写入文件的开头,若文件本来有内容则会全被覆盖
# a模式:即为追加模式,以只写方式打开文件,文件的指针放在文件的结尾,
# 当文件不存在时会创建一个新的文件
f = open("a.txt", "w")
f.write("abcd")   # 将"abcd"写入文件的结尾
# 关闭文件
f.close()

# 定位文件  f.seek(offset, whence)  offset为偏移量,
# whence为从哪里开始偏移,默认为文件的开头,即为0
# 文本文件中whence只能为0,二进制文件则可以是1或2,1代表当前位置,0代表末尾
# 执行结束后会改变文件的指针位置
f = open("a.txt", "w")
f.write("abcdefg")   # 将"abcdefg"写入文件的结尾
f = open("a.txt", "r")
f.seek(2)   # 从开头偏移;两位
content = f.read()
# 查看文件当前位置
pos = f.tell()
print(content)   # 结果为cdefg
print(pos)      # 结果为7
# 关闭文件
f.close()

读的三种方式
# 1、f.read(n)  读取文件中n个字节,会改变文件指针,默认为从当前指针位置读取到最后
# 2、f.readline() 从文件当前指针往后读取一行,会改变文件指针
f = open("a.txt", "r")
content = f.readline()
print(content, end="")
print(f.readline())
f.close()
3、f.readlines() 自动将文件内容按换行符进行处理,处理完后将每行内容组合成一个列表返回
f = open("a.txt", "r")
content = f.readlines()
print(content)  # 结果为['a\n', 'b\n', 'c\n', 'd\n', 'efg']
f.close()
# 4、利用for in遍历文件本身
f = open("a.txt", "r")
for i in f:     # f其实是一个迭代器
    print(i, end="")  # 逐行打印出文件中的内容
# 容错处理:判断文件是否可读  f.readable(),返回bool型,只有当可读时才进行读操作,
# 这样不会报错导致后面的代码不能运行

# 写操作  f.write(str)
# 判断文件是否可写 f.writable()

# 重命名
# 1、os.rename(oldName, newName)  修改单级名称,可以修改目录也可以修改文件名称
import os
 os.rename("a.txt", "b.txt")
# 2、os.renames(oldName, newName)  修改多级名称

# 删除
# 1、删除文件  os.remove("文件路径")   当文件不存在时会报错
import os
os.remove("test")
2、删除目录
# 2.1、os.rmdir(path) 不能递归地删除目录,如果文件夹非空,会报错
import os
os.rmdir("one/two")
# 2.2、os.removdirs(path)
#  能递归地删除整个目录,即这个目录的上一级目录只有这个子目录,则会把上级目录也删除,
#  如果文件夹非空,会报错
import os
os.removedirs("one/two2")

创建目录 os.mkdir("文件名称"[,mode])
不能递归地创建多级目录,只能创建单级目录,如果目录已经存在则会报错,
mode为数字模式权限,即控制文件的读写权限
import os
os.mkdir("a")

# 查看列举目录
# 获取当前目录 os.getcwd()
import os
print(os.getcwd())
# 改变默认目录   os.chdir("目标目录")
# 获取目录内容列表 os.listdir("./") 获取当前路径下的目录名称
print(os.listdir("./"))

# 将一个文件的内容复制到另一个文件中,必须使两个文件的格式一致,否则会产生乱码
f = open("sourceFile", "r", encoding="utf-8")  # 将两个文件的格式都指定为"utf-8"
content = f.read()
f1 = open("destFile", "a", encoding="utf-8")
f1.write(content)
f.close()
f1.close()

# 对于过大文件的复制,应把文件拆解成一小部分一小部分再复制
f = open("sourceFile", "r", encoding="utf-8")  # 将两个文件的格式都指定为"utf-8"
f1 = open("destFile", "a", encoding="utf-8")
while True:
    content = f.read(1024)  # 每次只读1024字节,文件指针向后移动
    if len(content) == 0:
        break           # 当读取到的内容为空,自动跳出循环
    f1.write(content)
f.close()
f1.close()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值