【第八篇】Python的文件(file)操作

一、方法介绍

Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

1 # open函数的语法格式
2
3 open(file, mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
4     file: 必需,文件路径(相对或者绝对路径)。
5     mode: 可选,文件打开模式
6     buffering: 设置缓冲
7     errors: 报错级别
8     newline: 区分换行符
9     closefd: 传入的file参数类型

mode的参数有:


模式

描述

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w

打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。先读后写才是安全的

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w+

打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

file中的常用方法:


方法

描述

file.close()

关闭文件。关闭后文件不能再进行读写操作。

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

file.next()

返回文件下一行

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有

file.readline([size])

读取整行,包括 "\n" 字符。

file.readlines([sizehint])

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint

字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区。


file.seek(offset[, whence])

设置文件当前位置

file.tell()

返回文件当前位置。

file.truncate([size])

截取文件,截取的字节通过size指定,默认为当前文件位置。

file.write(str)

将字符串写入文件,没有返回值

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

二、文件的操作

2.1 读取文件

2.1.1 read

 1 # 路径有两种:
 2 # 1.相对路径,相对于当前程序所在的文件夹
 3 #    ../ 返回上一层目录
 4 #    相对的是当前程序所在的文件夹
 5 # 2.绝对路径
 6 #   * 从磁盘根目录寻找
 7 #   * 互联网上的绝对路径
 8
 9 f = open("a.txt", mode="r", encoding="utf-8")
10
11 # read函数的参数是读取多少个字节,如果不加参数,默认是一次性读取文件的所有内容
12 data = f.read()
13 # 打印读取的文件内容
14 print(data)
15
16 # 关闭文件
17 f.close()

2.1.2 readlines

就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

f = open("a.txt", mode="r", encoding="utf-8")

data = f.readlines()
# 打印读取的文件内容
print(type(data))   # <class ‘list‘>

# 关闭文件
f.close()

2.1.3 readline

读取一行数据

f = open("a.txt", mode="r", encoding="utf-8")

# 只读取一行数据
data = f.readline()
# 打印读取的文件内容
print(data)

# 关闭文件
f.close()

2.1.4 读取大文件

f = open("a.txt", mode="r", encoding="utf-8")

# 读取大文件的方法
for line in f:
    print(line)
# 关闭文件
f.close()

对可迭代对象 f,进行迭代遍历:for line in f,会自动地使用缓冲IO(buffered IO)以及内存管理,而不必担心任何大文件的问题。

2.2 写文件

1 # w 模式写文件会将源文件覆盖
2 f = open("a.txt", mode="w", encoding="utf-8")
3
4 f.write("aaa")
5 # 关闭
6 f.close()
1 # 追加
2 f = open("a.txt", mode="a", encoding="utf-8")
3 f.write("ddd")
4 f.flush()
5 f.close()
 1 # r+ 默认模式指针在文件的开头
 2 # f = open("老师点名", mode="r+", encoding="utf-8")
 3 # s = f.read()
 4 # print(s)
 5 # f.write("周杰伦")
 6 # f.close()
 7 # 神坑
 8 f = open("精品", mode="r+", encoding="utf-8")
 9 s = f.read(3)  # 读3个字符
10 # 不管你前面读了几个,后面去写都是在末尾
11 f.write("aabbcc")  # 没有任何操作之前进行写,在开头写,如果读取了一些内容后再写,则是在最后
12 f.flush()
13 f.close()

文件内的光标移动

 1 一: read(3):
 2   1. 文件打开方式为文本模式时,代表读取3个字符
 3   2. 文件打开方式为b模式时,代表读取3个字节
 4 二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate
 5     seek(offset[, whence])
 6         offset -- 开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始
 7         whence:可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移;0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。
 8
 9
10 注意:
11   1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的
12   2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果
13   
 1 #!/usr/bin/python3
 2
 3 # 打开文件
 4 fo = open("runoob.txt", "r+")
 5 print ("文件名为: ", fo.name)
 6
 7 line = fo.readline()
 8 print ("读取的数据为: %s" % (line))
 9
10 # 重新设置文件读取指针到开头
11 fo.seek(0, 0)
12 line = fo.readline()
13 print ("读取的数据为: %s" % (line))
14
15
16 # 关闭文件
17 fo.close()

2.3 with操作

1  为了避免打开文件后忘记关闭,可以通过管理上下文,即:
2   with open(‘log‘,‘r‘) as f:
3 如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
4
5 在Python 2.7 后,with又支持同时对多个文件的上下文进行管理即:
6 with open(‘log1‘) as obj1, open(‘log2‘) as obj2:
1 with open("a.txt", mode="r", encoding="utf-8") as f:
2     data = f.read()
3     print(data)

# 提示输入文件
oldFileName = input("请输入要拷贝的文件名字:")

# 以读的方式打开文件
oldFile = open(oldFileName,‘rb‘)

# 提取文件的后缀
fileFlagNum = oldFileName.rfind(‘.‘)
if fileFlagNum > 0:
    fileFlag = oldFileName[fileFlagNum:]

# 组织新的文件名字
newFileName = oldFileName[:fileFlagNum] + ‘[复件]‘ + fileFlag

# 创建新文件
newFile = open(newFileName, ‘wb‘)

# 把旧文件中的数据,一行一行的进行复制到新文件中
for lineContent in oldFile.readlines():
    newFile.write(lineContent)

# 关闭文件
oldFile.close()
newFile.close()

文件备份

2.4 文件的相关操作

 1 import os
 2
 3 # 文件重命名
 4 os.rename("毕业论文.txt", "毕业论文-最终版.txt")
 5
 6 # 删除文件
 7 os.remove("毕业论文.txt")
 8
 9 # 创建文件夹
10 os.mkdir("abc")
11
12 # 获取当前目录
13 os.getcwd()
14
15 # 改变默认目录
16 os.chdir("../")
17
18 # 获取目录列表
19 os.listdir("./")
20
21 # 删除文件夹
22 os.rmdir("abc")

# 创建新文件,把修改后的文件写入新文件,删除老文件,再重命名新文件

import os

with open("吃的", mode="r", encoding="utf-8") as f1,         open("吃的_副本", mode="w", encoding="utf-8") as f2:
    for line in f1:
        new_line = line.replace("肉", "菜")
        f2.write(new_line)

os.remove("吃的")     # 删除文件
os.rename("吃的_副本", "吃的")    # 重命名文件

修改文件内容

#coding=utf-8
# 批量在文件名前加前缀
import os

funFlag = 1 # 1表示添加标志  2表示删除标志
folderName = ‘./renameDir/‘

# 获取指定路径的所有文件名字
dirList = os.listdir(folderName)

# 遍历输出所有文件名字
for name in dirList:
    print name

    if funFlag == 1:
        newName = ‘[东哥出品]-‘ + name
    elif funFlag == 2:
        num = len(‘[东哥出品]-‘)
        newName = name[num:]
    print newName

    os.rename(folderName+name, folderName+newName)

批量修改文件名

原文地址:https://www.cnblogs.com/fengyuhao/p/11479982.html

时间: 2024-10-08 01:46:13

【第八篇】Python的文件(file)操作的相关文章

python进阶--文件读写操作

Python读写文件 1. open 使用open打开文件后一定要记得调用 文件对象的close()方法.比如可以用try --finally语句来确保最后能关闭文件. >>>f1 = open('thisfile.txt') >>>try: f1.read() finally: f1.close() 2. 读文件(read,readline,readlines) ①读文本文件 input = open('data','r') input.read() ②读二进制文件

python对文件的操作

一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件和目录名:os.listdir() 3.函数用来删除一个文件:os.remove() 4.删除多个目录:os.removedirs(r"c:\python") 5.检验给出的路径是否是一个文件:os.path.isfile() 6.检验给出的路径是否是一个目录:os.path.isdir(

第十五篇 Python之文件处理

一 文件操作  介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统.操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来. 有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的

Python中文件的操作

文件的操作介绍 文件打开的方法 主要有两种: no with 格式:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 常用:variable = open('路径\文件',mode,encoding=None) variable.close() #不使用with方法时,在文件操作结束时要关闭文件 with 格式:with open('路径\

Python 之文件读写操作

Python 读写文件:   1.打开文件 使用 open 打开文件后,格式:open(filename,mode),最后一定要调用文件对象的 close() 方法,如图所示: 使用到的模式(mode)有: r    以渎方式打开文件,可读取文件信息 w    以血方式打开文件,可向文件写入信息.如果文件存在,则清空文件内容,在写入内容. a    以追加模式打开文件(一打开文件,文件指针自动移动到文件末尾),如果文件不存在则创建 r+    以读方式打开文件,可对文件执行读去和写入的操作 w+

Python读写文件实际操作的五大步骤

Python读写文件在计算机语言中被广泛的应用,如果你想了解其应用的程序,以下的文章会给你详细的介绍相关内容,会你在以后的学习的过程中有所帮助,下面我们就详细介绍其应用程序. 一.打开文件 Python读写文件在计算机语言中被广泛的应用,如果你想了解其应用的程序,以下的文章会给你详细的介绍相关内容,会你在以后的学习的过程中有所帮助,下面我们就详细介绍其应用程序.代码如下: f = open("d:\test.txt", "w") 说明: 第一个参数是文件名称,包括路

Python 对文件的操作

读的方式打开:file('文件名') 写的方式打开(替换源文件类似bash中的'>'):file('文件名','w') 写的方式打开(不替换源文件类似bash中的'>>'):file('文件名','a') 打开文件 将其赋值给变量:a = file('文件名') 顺序读一行:a.readline() 像文件中写新数据:a.write('嘻嘻嘻哈哈') Python默认内存中存放1024比特数据,够1024比特写一次文件 将数据强行写入文件:a.flush() 关闭文件:a.close()

【Python】文件读写操作

Python的文件读写有点类似php的文件读写.php的文件读写已经在<[php]让记事本成为你调控变量的控制台>(点击打开链接)说过了,以下用一个小样例说明Python的文件读写. 在F盘原本是没有f:\你好.txt这个文件的,我们要把用户在Python控制台输入的内容,搞到这个文件上去.本程序在Eclipse下的Pydev编译通过没有乱码.Windows控制台cmd的乱码问题请參考<[Python]遍历某文件夹下的全部文件夹与文件的路径.输出中文乱码问题>(点击打开链接).程序

Java文件File操作一:文件的创建和删除

一.简述 File 文件类,主要对文件进行相关操作.常用的File操作有:文件(夹)的创建.文件(夹)的删除,文件的读入和下载(复制)等: 二.文件(夹)的创建和删除 1.创建过程 实例: //create a new File @Test public void testCreateFile(){ File m=new File("E://file"); //創建文件夾 //判断文件夹存在否 if(!m.exists()){ m.mkdir(); //创建文件夹 } File f=n