14 文件操作

一、初识文件操作

使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句句柄就可以进行行各种各样的操作了. 根据打开方式的不同能够执行的操作也会有相应的差异.

打开文件的方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b

二、读模式(r,rb)

r 模式:

f = open('test_r',mode='r',encoding='utf-8')
data = f.read()
#for line in f: #循环文件
#print(line)
print(data)
f.close

注意:encoding表示编码集,文件实际保存编码就用实际编码获取数据,一般都用utf-8

如果不知道编码是什么?就可以用rb模式打开

rb 模式:

import chardet
f = open('test_rb',mode='rb')
data = f.read()
print(data) #data是字节码
f.close()

result = chardet.detect(data) #判断文件是什么编码
print(result) #{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

res = data.decode("utf-8") #解码
print(res)

三、循环文件(w,wb)

w 模式:

f = open("test_w",mode='w',encoding='utf-8')
f.write("测试写文件")
f.close()

注意:如果文件不存在,会创建新文件;如果文件存在,会清空文件中的内容

wb 模式:

f = open("test_wb",mode='wb')
f.write("测试二进制".encode("utf-8"))
#写文件是必须将字符串转化成utf-8,如果不指定写入的是字节类型编码
f.close()

四、追加(a,ab)

a 模式:

把内容追加到文件尾部

f = open("test_a",mode='a',encoding='utf-8')
f.write("\n撒娇的黄金客户")
f.close()

五、读写模式(r+, r+b)

f = open("测试",mode='r+',encoding='utf-8') #常用
data = f.read() #可以读内容
print(data)
f.write("\n撒娇的黄金客户") #可以写
f.close()

六、写读模式(w+,w+b)

f = open("test_w+",mode='w+',encoding='utf-8') #不经常用
f.write("撒娇的黄金客户")
data = f.read()
print(data)
f.close()

七、追加读(a+)

f = open("test_a+",mode='a+',encoding='utf-8')
# f.seek(0)
# data = f.read()
# print(data)
f.write("\n撒娇的黄金客户")
f.seek(0)
data = f.read()
print(data)
f.close()

八、文件操作的其他内容

def fileno(self, *args, **kwargs): # real signature unknown
    返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到

def flush(self, *args, **kwargs): # real signature unknown
    把文件从内存buffer里强制刷新到硬盘

def readable(self, *args, **kwargs): # real signature unknown
    判断是否可读

def readline(self, *args, **kwargs): # real signature unknown
    只读一行,遇到\r or \n为止

def seek(self, *args, **kwargs): # real signature unknown
    把操作文件的光标移到指定位置
    *注意seek的长度是按字节算的, 字符编码存每个字符所占的字节长度不一样。
    如“路飞学城” 用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek(4) 就把光标切换到了“飞”和“学”两个字中间。
    但如果是utf8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处理剩下的文本时发现用utf8处理不了了,因为编码对不上了。少了一个字节

def seekable(self, *args, **kwargs): # real signature unknown
     判断文件是否可进行seek操作

def tell(self, *args, **kwargs): # real signature unknown
     返回当前文件操作光标位置 

def truncate(self, *args, **kwargs): # real signature unknown
     按指定长度截断文件
     *指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。

def writable(self, *args, **kwargs): # real signature unknown
     判断文件是否可写

九、文件修改

import os
with open("食物","r",encoding="utf-8") as f1,open("食物_new","w",encoding="utf-8") as f2:
    content = f1.read()
    new_content = content.replace("菜","花")
    f2.write(new_content)
os.remove("食物")
os.rename("食物_new","食物")
import os
with open("食物2","r",encoding="utf-8") as f1,open("食物2_new","w",encoding="utf-8") as f2:
    for line in f1:
        new_line = line.replace("花","肉")
        print(new_line)
        f2.write(new_line)
os.remove("食物2")
os.rename("食物2_new","食物2")

原文地址:https://www.cnblogs.com/shibojie/p/11656345.html

时间: 2024-11-04 00:38:27

14 文件操作的相关文章

廖雪峰js教程笔记14 file文件操作

在HTML表单中,可以上传文件的唯一控件就是<input type="file">. 注意:当一个表单包含<input type="file">时,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才能正确编码并以multipart/form-data格式发送表单的数据. 出于安全考虑,浏览器只允许用户点击<input type="file">来选择本地

python基础:python循环、三元运算、字典、文件操作

目录: python循环 三元运算 字符串 字典 文件操作基础 一.python编程 在面向过程式编程语言的执行流程中包含: 顺序执行 选择执行 循环执行 if是条件判断语句:if的执行流程属于选择执行:if语句有三种格式,如下: 在多分支的if表达式中,即使多个条件同时为真,也只会执行一个,首先测试为真: 选择执行 单分支的if语句 if CONDITION: 条件为真分支 双分支的if语句 if CONDITION 条件为真分支 else 条件不满足时分支 多分支的if语句 if CONDI

Python基础(六) 基础文件操作

今天学习python下对文件的基础操作,主要从open函数.File对象的属性.文件定位.简单操作.举例说明几个步骤开始学习,下面开始进入今天的主题: 一.open函数介绍 open函数主要是打开一个文件,创建一个file对象,相关的方法可以调用它进行读写 . 语法格式如下: 1 2 3 file object = open(文件名,打开文件的模式) file object  = with open (文件名,打开文件的模式) as 变量名 两种语法格式的不同在于下面这种方法不用输入f.clos

C/C++文件操作

1 基于C的文件操作 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作 2 一.流式文件操作 3 4 1.fopen() 5 FILE *fopen(const char *filename,const char *mode) 6 "r" 以只读方式打开文件 7 "w" 以只写方式打开文件 8 "a" 以追加方式打开文件 9 "r+" 以读/写方式打开文件,如无文件出错 10 "w+&quo

day3 文件操作

文件操作是在内存中进行操作的,因为文件是存储在内存中的. open函数,该函数用于文件处理: 操作文件时,一般需要经历如下步骤: (1)打开文件: (2)操作文件 一.打开文件 文件句柄 = open("文件路径","模式") 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: (1)r,只读模式(默认): (2)w,只写模式.[不可读:不存在则创建:存在则删除内容:] (3)a,追加模

python成长之路第三篇(4)_作用域,递归,模块,内置模块(os,ConfigParser,hashlib),with文件操作

打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.作用域 2.递归 3.模块介绍 4.内置模块-OS 5.内置模块-ConfigParser 6.内置模块-hashlib 7.with文件操作 代码执行环境默认为3.5.1 一.作用域 (1)什么是作用域,官方来说作用域就是就是有不同的命名空间,就像下面的代码一样,a=1它的作用域是全局的,也在全局的命名空间当中,当函数 action中的a=2它就在局部的作用域中,也在局部的命名空间当中. a = 1def

C语言4——文件操作

1.文件操作 int main(){ FILE *p=fopen("D:\\temp\\a.txt","w");//用写的方式打开一个文件 //w的意思是如果文件不存在就建立一个,如果文件存在就覆盖 fputs("hello world",p);//向文件中写入一个字符串 fclose(p);//关闭文件 } int main(void){ char s[1024]={0}; FILE *p=fopen("D:\\temp\\a.txt

Java文件操作系列[2]——使用JXL操作Excel文件

由于java流无法实现对Excel文件的读写操作,因此在项目中经常利用第三方开源的组件来实现.支持Excel文件操作的第三方开源组件主要有Apache的POI和开源社区的JXL. 总体来说,二者的区别是:JXL较为轻量级,如果是对Excel文件的简单操作,建议使用JXL:POI的功能相当强大,但同时处理问题也相当的繁琐. 1.准备工作 [必需]下载JXL的jar包:jxl.jar [非必需]JXL API  (提取密码:zgqj) 2.一些必要的说明 主要是对Excel结构的说明: Excel后

Python 第三天 文件操作

文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open. open会自己在Python中找. 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读,也