Python文件操作
文件操作
1.文件路径:例如:d:\******(绝对路径);'文件名'(相对路径在同文件夹下直接打开)
2.编码方式:例如:utf-8,gbk.....
3.操作方式:例如:只读,只写,追加,读写,写读.....
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True);#open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写
打开文件简单三部:(只读)
1.'对象(例如f)'=open('文件路径',mode='',encoding=''(二进制写入或读放到操作中))#'对象及变量'
2.'变量(例如k)'=f.read();
3.print('k'),f.close()。
高级打开:
with open('文件路径',mode='',encoding='')#'对象及变量'as'对象'(可以多开不需要手动关闭):
Ps:
如果要读原文件使用 for i in 循环读
补充 with 其他:
with obj对象
__enter__(self) # 实际是走对象中的 __enter__方法 进入后
执行 with obj: 后其他内容
__exit__(self,exc_type,exc_val,exc_tb) # 最后走__exit__退出
模式详解
模式 描述
r ***以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb ***以二进制格式(bytes)打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ ***打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ ***以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w ***打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb ***以二进制格式(bytes)打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。(f.write('内容').encode('你写文件的编码方式')只有在二进制mode下需要写,open中不需要写encoding)
w+ ***打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a ***打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab ***以二进制格式(bytes)打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
属性详解
属性(这里的file值得是句柄) 描述
file.closed 返回true如果文件已被关闭,否则返回false。
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。
file.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true;
*****file.seek() ********调光标;是按照字节去定光标的位置(可以选择光标字节);
# seek(0,0) 开头 seek(0,1) 当前位置 seek(0,2) 移动到末尾 # 0索引代表移动位置,1索引代表行状态
*****file.read() ********读文件内容,读出来的都是字符;(可以选择阅读符);****"一次性读*"
*****file.readable() ********判断文件是否可读;
*****file.readline() ********一行一行读;*****"不知道在哪结束;bytes按照字节读没有行的概念"
*****file.readlines() ********每一行当成列表中的一个元素,然后添加到list中,可以使用循环打印出来;****"一次性读*"
*****file.write() ********写文件;
*****file.writeable() ********判断文件是否可写;
******for循环读 ********for i in file()
*****file.truncate() ********用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除.
*****file.tell() ********查找到光标目前的位置;
*****file.close() ********关闭文件;
*****file.flush() ********强制保存;
补充: 关于修改文件的方法
读一个,写一个,删除,重命名(两个文件替换)
import os
os.remove('文件名') 删除文件
os.rename('文件名','新文件名') 重命名文件
深浅拷贝
" = " 栈空间的内存地址的赋值
浅拷贝: 只拷贝第一层内容
# 一定会创建一个对象,内部构造和原来的对象一模一样,原来的对象中的内存指向和新对象的指向是一致的
深拷贝: 全部复制一份
# 一定会创建一个对象,内部构造和原来的一样,但是地址的指向不一样
Songzhibin