文件操作

1、打开文件
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
file:文件的路径。
mode:打开文件的模式,默认只读。
buffering:文件的缓冲策略。
encoding:文件解码方式(必须是在字符串模式)。
errors:当编码错误时的提示信息(只能在文本模式)。
newline:控制换行方式,在行的末尾是None, '', '\n', '\r', and '\r\n'。
closefd:如果closefd为False,底层文件描述符将保持打开状态,当文件关闭时或者给定文件名时,此方法无效,在这种情况下必须是真的。

下面是读取文件示例:如果文件不存在会报错。

file_open = open("test1.txt",mode="rb")
print(file_open.read())
file_open.close() # 打印内容如下:
FileNotFoundError: [Errno 2] No such file or directory: 'test1.txt'

文件读取的操作

test.txt文件内容如下:

readline(limit:int):如果不写参数默认读取一整行,如果填写参数将限制读取的字符个数,返回一个str。

file_open = open("test.txt",mode="r",encoding="utf-8")
print(file_open.readline()) # 不写参数读一整行
file_open.close() # 打印内容如下
上海滩

readline(limit:int)int为2时读取两个字符。

file_open = open("test.txt",mode="r",encoding="utf-8")
print(file_open.readline(2)) # 写参数2读取两个字符
file_open.close() # 打印内容如下:
上海

readlines(hint:int):不写参数默认读取所有内容,返回一个列表,如果指定参数,经个人测试如果参数的int值不超过文件一行的内容,将显示1行。如果参数的int值超过一行的内容,将显示一二两行,如果参数的int值大于两行的内容将显示三行,以此类推。
下面是不带参数的事例:

file_open = open("test.txt",mode="r",encoding="utf-8")
print(file_open.readlines())
file_open.close() # 打印内容如下:
['上海滩\n', '射雕英雄传\n', '侠客行']

下面是带参数的事例:

file_open = open("test.txt",mode="r",encoding="utf-8")
print(file_open.readlines(3)) # 参数设置3
file_open.close() # 打印内容如下:
['上海滩\n'] # 参数3没有超过第一行文件的个数所以只显示一行 file_open = open("test.txt",mode="r",encoding="utf-8")
print(file_open.readlines(4)) # 参数设置4
file_open.close() # 打印内容如下:
['上海滩\n', '射雕英雄传\n'] # 参数4超过了一行内容,所以显示两行.

read(int):不写参数默认读取所有文件内容,

file_open = open("test.txt",mode="r",encoding="utf-8")
print(file_open.read()) # 不写参数的read()
file_open.close() # 打印内容如下:
上海滩
射雕英雄传
侠客行 file_open = open("test.txt",mode="r",encoding="utf-8")
print(file_open.read(3)) #带参数的read(3)
file_open.close() # 打印内容如下:
上海滩 # 打印三个字符

由上面的打印可以知道,如果打开文件的模式是文本模式读取三个字符

file_open = open("test.txt",mode="rb")
print(file_open.read(3)) # 带参数的read(3)
file_open.close() # 打印内容如下:
b'\xe4\xb8\x8a' # 打印三个字节

当以字节码模式读取文件时,则读取的是三个字节。

文件的写入

覆盖写 mode="w"

file_write = open("test_1.txt",mode="w",encoding="utf-8")
file_write.write("我是写入的") #
file_write.close()

效果如下:

mode = "w"模式是覆盖写的操作,如果文件存在将删除原文件,新建一个同名的文件后在执行写的操作。如果原文件不存在执行新建的操作。

文件的追加操作:mode="a"

file_append = open("test.txt",mode="a",encoding="utf-8")
file_append.write("我是追加的")
file_append.close()

效果如下:

文件操作的几种模式:

r :只读(文本模式读取文件)。
a :追加写,文件的末尾追加。
w :覆盖写,先清空文件,后写入文件。
rb 、wb、ab是以字节的方式操作文件,所以不需要加encoding对字节进行编码的操作。

a+ :追加写 + 读 (注意 :此模式先追加在读,所以在追加写后,光标是在文件的末尾,如果想要读文件,需要将光标移动到要读取的位置进行读取)。
w+: 覆盖写 + 读 (注意 :此模式先覆盖写在读,所以在覆盖写后,光标是在文件的末尾,如果想要读文件,需要将光标移动到要读取的位置进行读取)。
r+ :读 + 写 。

文件的其它操作:

seek():移动光标(移动光标是按字节移动,不是按字符移动)。
seek(0,0):移动光标到文件开头。
seek(0,1):移动光标到当前位置。
seek(0,2):移动光标到文件末尾。

tell():查看光标当前位置(是字节码)。
truncate():截断光标以后所有数据,只保留光标前面的数据。

文件的删除、重命名操作:

重命名:rename(源文件名,从命名后的文件名)。
import os
os.rename("test.txt","test1.txt")

删除:remove(文件名)。
import os
os.remove("test1.txt")

路径:

文件的路径分为相对路径和绝对路径。
相对路径:相对于当前目录下进行文件查找(./是当前目录, ../是上一层目录)。
绝对路径:是从文件的根目录开始一层一层的进行查找,Python中使用绝对路径。例如:
G:\feiq\Recv Files\test.txt
因为"\"在字符串中有特殊意义,所以文件路径中的"\"不能被识别,下面是两种识别绝对路径的方法。

第一种在路径前面加上r来
file_read = open(r"G:\feiq\Recv Files\test.txt",mode="r",encoding="utf-8")

第二种是使用"\\"用转移符的方式
file_read = open("G:\\feiq\\Recv Files\\test.txt",mode="r",encoding="utf-8")

关于open(...)打开文件后,必须要有个close()来关闭文件句柄。否则会造成内存泄漏。

可以使用with上下文管理的方式操作文件,下面是两种方式的对比:

# 使用with open()的方式操作文件
with open(r"test.txt",mode="r",encoding="utf-8") as file_read:
file_read.read() # 使用open()的方式操作文件
file_read = open("test.txt",mode="r",encoding="utf-8")
file_read.read()
file_read.close() # 使用文件句柄后要关闭文件句柄

下一篇:初识函数:https://www.cnblogs.com/caesar-id/p/10291376.html

Python文件操作之把臂入林的更多相关文章

  1. Python基础篇【第2篇】: Python文件操作

    Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...

  2. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  3. Python文件操作与函数目录

    文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...

  4. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  5. day8.python文件操作

    打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...

  6. 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

    嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...

  7. Python之路Python文件操作

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

  8. python 文件操作 r w a

    python基础-文件操作   一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件       打开文件时,需要指定文件路径和以何等方式打开文件, ...

  9. Python:文件操作技巧(File operation)(转)

    Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python #  -*- coding: utf8 -*- spath = " D:/dow ...

随机推荐

  1. [SDOI2018] 旧试题

    推狮子的部分 \[ \sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^C\sigma(ijk) =\sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^C\sum_ ...

  2. Spring中你可能不知道的事(二)

    在上一节中,我介绍了Spring中极为重要的BeanPostProcessor BeanFactoryPostProcessor Import ImportSelector,还介绍了一些其他的零碎知识 ...

  3. linux清空文件内容的几种方式与区别

    虽然linux清空文件内容的方式有很多种,但是他们之间有着细微的差别.通过实践我将他们分为两类: 将文件清空,文件大小为0k $ : > filename  $ > filename  $ ...

  4. Python爬虫入门教程 26-100 知乎文章图片爬取器之二

    1. 知乎文章图片爬取器之二博客背景 昨天写了知乎文章图片爬取器的一部分代码,针对知乎问题的答案json进行了数据抓取,博客中出现了部分写死的内容,今天把那部分信息调整完毕,并且将图片下载完善到代码中 ...

  5. SpringBoot入门教程(十三)CORS方式实现跨域

    什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名.端口.协议任一不同,都是跨域 . 跨域资源访问是经常会遇到的场景,当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资 ...

  6. ADO.NET中COMMAND对象的ExecuteNonQuery、ExcuteReader和ExecuteScalar方法

    1.ExecuteNonQuery方法.该方法执行更新操作,即与UPDATE.INSERT.DELETE等语句有关的操作,在这种情况下,返回值是命令影响的行数.对其他语句,如SET或CREATE,则返 ...

  7. golang - gob与rpc

    今天和大家聊聊golang中怎么使用rpc,rpc数据传输会涉及到gob编码,所以先讲讲gob,别担心,就算你完全没有接触过gob与rpc,只要知道rpc的中文是远程过程调用,剩下的我都能给你讲明白( ...

  8. Spring Boot 2.x(六):优雅的统一返回值

    目录 为什么要统一返回值 ReturnVO ReturnCode 使用ReturnVO 使用AOP进行全局异常的处理 云撸猫 公众号 为什么要统一返回值 在我们做后端应用的时候,前后端分离的情况下,我 ...

  9. JS截取数字

    Math是javascript的一个内部对象,该对象的方法主要是一些数学计算方法floor:下退 Math.floor(12.9999) = 12ceil:上进 Math.ceil(12.1) = 1 ...

  10. 2018/12.21:函数this的指向

    1.     解决函数内this指向 1.        可以在函数外提前声明变量 _this/that=this 2.        通过apply和call 来修改函数内的this指向 (1)   ...