python学习-基础-文件操作

一、文件权限

访问模式 说明
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。如果文件不存在,则报错
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。写入的内容必须为字符串
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

二、文件指针

1、 r 和 w 模式打开文件,文件指针在文件起始位置。 
2、a 打开文件,文件指针在末尾 
3、对文件进行任何读写操作,都会改变文件指针位置 
4、unix/linux换行为\n,mac换行为\r,windows换行为\r\n 
5、f.tell() 返回当前指针的读写设置,是当前位置距离文件开头的位置 
6、f.seek(offset , whence) 
offset:偏移量,偏移距离whence指定位置的偏移量 
whence:(0,1,2)0表示文件开头,1表示当前位置,2表示文件结尾位置。 1和2只能在二进制下使用

三、文件操作

1、文件的打开
   f = open(filename, 文件权限,encoding="utf-8")
2、文件的关闭
   f.close()
3、f.write(字符串)
   文件写数据,如果文件不存在那么创建文件,如果存在,先清空,然后写入数据。
4、①details = f.read(num)
      文件读数据,num表示读取数据的长度(字节),如果不传入num,就全部读取
   如果使用读了多次,那么后面读取的数据是从上次读完后的位置开始的。
   ②details = f.readline()
      一行一行的读取,
   ③details = f.readlines()
      读取所有数据,返回一个列表,每一行为列表的一个元素
5、f.flush()
    文件缓冲区的处理,将缓冲区的文件写入磁盘里,不清空缓冲区,也不需要关闭文件。
6、文件信息处理
   ①f.encoding 显示文件用的编码
   ②f.name     获得文件的名字
   ③f.mode     获得文件的权限
   ④f.closed   返回bool。判断文件是否关闭
7、上下文管理器
   with open("xxxxx.txt", "r+") as f:         打开文件,写入,不用关闭
              f.write("python")

四、文件目录操作(import os模块)

1、 path = os.getcwd()
    返回当前文件所在的绝对路径。
2、 路径:
    ①绝对路径:从磁盘根目录开始,到指定文件的完整路径
    ②相对路径:相对于某个目录的路径,cd ..表示上一级目录
3、 os.path.exists(“dirname”)
    判断某个文件是否存在,返回bool
4、 os.remove()
    删除指定文件。
5、 os.rmdir()
    删除指定文件夹
6、 os.rename(oldname,newname)
    给指定文件或者文件夹重命名
7、 os.listdir(指定目录)
    获取指定目录下的所有文件,返回一个列表
8、 os.mkdir()
    创建一个文件夹
9.  os.makedirs(test\test\test)
    创建多个目录,递归创建目录
10、os.chdir()
    改变默认目录

五、任意文件的拷贝

import os
# 输入你要备份的文件名
dir_name = input("请输入你要备份的文件名:")
path = os.getcwd(dir_name)
if os.path.exists(dir_name):
    pass
else:
    print("该文件不在指定路径。")
# 新的文件夹名字
# 判断后缀
location = dir_name.rfind(".")
new_dir_name = dir_name[:location] + "_backup" + dir_name[location:]
# 打开原文件,因为是二进制文件
# 打开新文件,分别读和写
f_old = open(dir_name, "rb")
f_new = open(new_dir_name, "wb")
details = f_old.read(1024 * 1024)
f_new.write(details)
f_new.close()
f_old.close()

猜你喜欢

转载自blog.csdn.net/zhangmoyan9527/article/details/82053337