一    操作文件的方法:

f.read() #读取所有内容,光标移动到文件末尾
f.readline() #读取一行内容,光标移动到第二行首部
f.readlines() #读取每一行内容,存放于列表中 f.write('1111\n222\n') #针对文本模式的写,需要自己写换行符
f.write('1111\n222\n'.encode('utf-8')) #针对b模式的写,需要自己写换行符
f.writelines(['333\n','444\n']) #文件模式
f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式 #了解
f.readable() #文件是否可读
f.writable() #文件是否可读
f.closed #文件是否关闭
f.encoding #如果文件打开模式为b,则没有该属性
f.flush() #立刻将文件内容从内存刷到硬盘
以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
 
 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
二  文件内光标移动

一: read(3):

  1. 文件打开方式为文本模式时,代表读取3个字符

  2. 文件打开方式为b模式时,代表读取3个字节

二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate

注意:

  1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

  2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

三  文件的另一种打开模式‘b’模式
1 那么b模式是与t模式有相似的地方,就是他们都不能单独使用,必须跟r,w,a。一起用在一起。
2 b模式下的一个特殊点既是读写都以bytes为单位的。
3 b模式下不能再指定encoding参数了。
那么下面我们来用实例介绍他的几种用法:
‘rb’
with open('1.jpg',mode='rb')as f:
data=f.read()
print(data)
print(type(data)) with open('a,txt',mode='rb')as f:
data=f.read
print(data.decode('utf-8'))
prirnt(type(data))
首先我们可以看出,rb模式下,我们可以读文本文件也可以读视频,图片文件。
但是在进行文本文件的读取时,我们进行解码,因为在rb模式下读写都以bytes为单位,所以如果我们不进行解码就会报错。
‘rw’
在‘wb’模式下
with open('b,txt',mode='wb')as f:
msg='哈喽‘
f.write(msg.encode('gbk)) with open('b,txt',mode='wb')as f:
msg='哈喽‘
f.write(msg.encode('utf-8'))
同样的我们在进行wb的时候,我们也要将中文字符编码成bytes类型可以使用(’gbk‘)或者(’utf-8‘)

’ab‘

在’ab‘模式下

with open('b,txt',mode='ab')
f.write('你好'.encode('utf-8'))
或者
f.write('你好'.encode('gbk'))

四   文件复制

文件复制的原理就是按照原文件再创建一个新的文件,将原文件的内容一行一行的读出来然后写入新创建的文件。

文件copy

import sys

l=sys.argv#把命令行中的解释器后空格分隔后的所有参数都存成列表,例如:你输入23 3 2 3 
那么出来的方式则是:[’23‘,’3‘,’2‘,’3‘]
print(l) src_file_path=l[1]
dst_file_path=l[2] print(src_file_path)
print(dst_file_path) with open(r'%s''%src_file_path,mode='rb')as f1,\
open(r'%s'%dst_file_path,mode='wb')as f2: for line in f1:
f2.write(line)

五    文件修改的两种方式

第一种:

1 先把文件内容全部读入内存。

2 然后在内存中的进行文件的修改。

3  最后将修改后的内容写入原文件,那么在这个过程实际上是一个对于原文件的更新。

    with open('user,txt',mode='r',encoding='utf-8')as f:
data=data.read()#将读取的文件内容付给data data=data.repalce('你好','你好[哈哈哈]')#将文件中的’你好‘换成’你好[哈哈哈]‘ with open(’user,txt‘,mode='w',encoding='utf-8')as f: f.write(data) #将修改后的内容再传进去原文件,实现对于原文件的覆盖。

第二种

1 先对于原文件进行读取操作。

2 再通过文件的w实现创建一个新的文件,

3 然后对原文件进行逐行查找,将找到的需要修改的地方进行修改运用replace,然后写入新的文件

4 最后删除os.remove(原文件),修改新文件 os.rename().将文件名改为与原文件相同

import sys
impot os with open(’user,txt‘,mode='rt',encoding='utf-8')as f1,\
open('user,txt,swap',mode='wt',encoding='utf-8')as f2: for line in f1:
if '你好'in line:
line=line.replace('你好',’你好[哈哈哈]‘) f2.write(line) os.remove('user,txt')
os.rename('user,txt,swap','user,txt')

六  函数

函数的定义:用来实现某种功能的工具。我们要想使用函数,必须先定义函数

函数分类:内置函数和自定义函数
、内置函数
为了方便我们的开发,针对一些简单的功能,python解释器已经为我们定义好了的函数即内置函数。对于内置函数,我们可以拿来就用而无需事先定义,如len(),sum(),max()
ps:我们将会在最后详细介绍常用的内置函数。 、自定义函数
很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,事先定制好我们自己的函数来实现某种功能,以后,在遇到应用场景时,调用自定义的函数即可。
												

python之路07文件处理的更多相关文章

  1. Python之路 day2 文件基础操作

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa ''' #f,文件句柄;模式 a : append 追加文件内容 f = open( ...

  2. 小白的Python之路 day2 文件操作

    文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...

  3. Python Revisited Day 07 (文件处理)

    目录 7.1 二进制数据的读与写 7.1.1 带可选压缩的Pickle 7.1.2 带可选压缩的原始二进制数据 7.2 文本文件的写入与分析 7.2.1 写入文本 7.2.2 分析文本 7.2.3 使 ...

  4. python之路(五)-文件操作

    文件操作无非两个,即:读.写 python 2.x: 文件句柄 = file('文件路径', '模式') python3.x: 文件句柄 = open('文件路径', '模式') 打开文件的模式有: ...

  5. 小白学习Python之路---py文件转换成exe可执行文件

    一.背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽,然后我想着网上肯定有关于Python脚本转换成可执行文件的 ...

  6. python之路---08 文件操作

    二十六.   文件 f = open(文件路径,mode = '模式',encoding = '编码格式') 1.基础 ① 读写时,主要看光标的位置 ②操作完成要写    f.close( ) f.f ...

  7. python之路---07 join() fromkeys() 深浅拷贝

    二十四.基本数据类型补充 1.join() "*".join("马虎疼") # 马*虎*疼 把传递进去的参数进行迭代.  获取到的每个元素和前面的*进行拼接.  ...

  8. NO.3:自学python之路------集合、文件操作、函数

    引言 本来计划每周完成一篇Python的自学博客,由于上一篇到这一篇遇到了过年.开学等杂事,导致托更到现在.现在又是一个新的学期,春天也越来越近了(冷到感冒).好了,闲话就说这么多.开始本周的自学Py ...

  9. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

随机推荐

  1. Javascript鼠标事件大全

    事件 浏览器支持 描述 onClick IE3|N2|O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDblClick IE4|N4|O 鼠标双击事件 onMouseDown IE4|N ...

  2. C# [ModelName]标记 模型,类名称重复。

    前几天遇到一个不算bug的bug  记录分享一下  出错情况 webapi  程序会自带一个模板  如图 点某一个接口进去后     出错原因      model实体中出现了名称一样的(并不会影响程 ...

  3. POJ 3253 Fence Repair STL 优先队列

    这题做完后觉得很水,主要的想法就是逆过程思考,原题是截断,可以想成是拼装,一共有n根木棍,最后要拼成一根完整的,每两根小的拼成一根大的,拼成后的木棍长度就是费用,要求费用最少.显然的是一共会拼接n-1 ...

  4. oracle在进行跨库访问时,采用dblink实现

    首先了解下环境:在tnsnames.ora中配置两个数据库别名:test1/test1@11orcl1.tets2/tets2@12orlc2,在orcl1中创建database link来访问orc ...

  5. web页面的数据从excel中读取

    # -*- coding: utf-8 -*- import xdrlib ,sysimport xlrdimport datetimeimport jsonimport conf,reimport ...

  6. Git冲突和解决冲突

    1.产生冲突原因 产生:多个开发者同时使用或者操作git中的同一个文件,最后在依次提交和push的时候,第一个操作的是可以正常提交的,而之后的开发者想要执行pull(拉)和pull(push)操作的时 ...

  7. PostgREST docker-compose 试用

    PostgREST 是一款很不错的直接将pg 数据库暴露为restapi ,使用了基于行级别安全访问控制, 比较全的restapi 查询以及集成了swagger openapi docker-comp ...

  8. C语言发送邮件

    c语言发送邮件Linux下使用c语言发送邮件 领导交代一个任务,需要将服务器上的df -hl的执行结果定时发给他. 尝试使用sendmail来发邮件,但是后来放弃了,并不是所有的服务器上都安装了sen ...

  9. stty(set tty)

    tty [ -a ] [ -g ] [ Options ]   stty(set tty)命令用于显示和修改当前注册的终端的属性. UNIX系统为键盘的输入和终端的输出提供了重要的控制手段,可以通过s ...

  10. k最邻近算法——加权kNN

    加权kNN 上篇文章中提到为每个点的距离增加一个权重,使得距离近的点可以得到更大的权重,在此描述如何加权. 反函数 该方法最简单的形式是返回距离的倒数,比如距离d,权重1/d.有时候,完全一样或非常接 ...