我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python--6 文件操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python--6 文件操作

文件通常用于存储数据或应用系统的参数。Python 提供了 OS、 os.path、 shutil 等模块处理文件, 其中包括打开文件、 读写文件、 复制和删除文件等函数。

python文件操作基本流程:

 

1.打开文件,或者新建立一个文件

2.操作文件,如读/写数据

3.关闭文件

 

6.1 文件的常见操作

6.1.1 文件的打开与关闭

文件句柄 = open('文件路径''模式')

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

打开文件的模式有:

    • r ,只读模式【默认】
    • w,只写模式【不可读;不存在则创建;存在则清空内容;】
    • x, 只写模式【不可读;不存在则创建,存在则报错】
    • a, 追加模式【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

    • r+, 读写【可读,可写】
    • w+,写读【可读,可写】
    • x+ ,写读【可读,可写】
    • a+, 写读【可读,可写】

 "b"表示以字节的方式操作

    • rb  或 r+b
    • wb 或 w+b
    • xb 或 w+b
    • ab 或 a+b

 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

 

<1>打开文件

在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件

open(文件名,访问模式)

示例如下:

f = open('test.txt', 'w')

<2>关闭文件

close( )

示例如下:

# 新建一个文件,文件名为:test.txt
f = open('test.txt', 'w')

# 关闭这个文件
f.close()

6.1.2 文件的读写

 

<1>写数据(write)

使用write()可以完成向文件写入数据

demo:

f = open('test.txt', 'w')
f.write('hello world, i am here!')
f.close()

注意:

    • 如果文件不存在那么创建,如果存在那么就先清空,然后写入数据

<2>读数据(read)

使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据

demo:

f = open('test.txt', 'r')

content = f.read(5)

print(content)

print("-"*30)

content = f.read()

print(content)

f.close()

 

注意:

如果open是打开一个文件,那么可以不用写打开的模式,即只写 open('test.txt')

如果使用读了多次,那么后面读取的数据是从上次读完后的位置开始的

<3>读数据(readlines)

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

#coding=utf-8

f = open('test.txt', 'r')

content = f.readlines()

print(type(content))

i=1
for temp in content:
    print("%d:%s"%(i, temp))
    i+=1

f.close()

 

<4>读数据(readline)

#coding=utf-8

f = open('test.txt', 'r')

content = f.readline()
print("1:%s"%content)

content = f.readline()
print("2:%s"%content)


f.close()

 

  文件的遍历可以使用循环的方式:

  

#coding=utf-8

f = open('test.txt', 'r')
for line in f:
print(line)
f.close()

示例:制作文件的备份

  任务描述

  

  • 输入文件的名字,然后程序自动完成对文件进行备份

 

# --*-- coding=utf-8 --*--

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

oldFile = open(oldFileName,'r')
# 如果打开文件if oldFile:

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

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

# 创建新文件
newFile = open(newFileName, 'w')

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

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

6.1.3 文件的随机读写

 

<1>获取当前读写的位置

 

在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取

# 打开一个已经存在的文件
f = open("test.txt", "r")
str = f.read(3)
print("读取的数据是 : ", str)

# 查找当前位置
position = f.tell()
print("当前文件位置 : ", position)

str = f.read(3)
print("读取的数据是 : ", str)

# 查找当前位置
position = f.tell()
print("当前文件位置 : ", position)

f.close()
View Code

 

 

<2>定位到某个位置

 

如果在读写文件的过程中,需要从另外一个位置进行操作的话,可以使用seek()

 

seek(offset, from)有2个参数

 

offset:偏移量

 

from:方向

 

0:表示文件开头

 

1:表示当前位置

 

2:表示文件末尾

 

demo:把位置设置为:从文件开头,偏移5个字节

 

# 打开一个已经存在的文件
f = open("test.txt", "r")
str = f.read(30)
print("读取的数据是 : ", str)

# 查找当前位置
position = f.tell()
print("当前文件位置 : ", position)

# 重新设置位置
f.seek(5,0)

# 查找当前位置
position = f.tell()
print("当前文件位置 : ", position)

f.close()
View Code

 

 

demo:把位置设置为:离文件末尾,3字节处

 

# 打开一个已经存在的文件
# f = open("test.txt", "r")
# 程序运行报错io.UnsupportedOperation: can't do nonzero cur-relative seeks
# 修改为:
f = open("test.txt", "rb")


# 查找当前位置
position = f.tell()
print("当前文件位置 : ", position)

# 重新设置位置
f.seek(-3,2)

# 读取到的数据为:文件最后3个字节数据
str = f.read().decode()

print("读取的数据是 : ", str)

f.close()
View Code

6.1.4 文件的重命名、删除

 

有些时候,需要对文件进行重命名、删除等一些操作,python的os模块中都有这么功能

<1>文件重命名

os模块中的rename()可以完成对文件的重命名操作

rename(需要修改的文件名, 新的文件名)

import os

os.rename("毕业论文.txt", "毕业论文-最终版.txt")

<2>删除文件

os模块中的remove()可以完成对文件的删除操作

remove(待删除的文件名)

import os

os.remove("毕业论文.txt")

 

6.2 文件夹的相关操作

实际开发中,有时需要用程序的方式对文件夹进行一定的操作,比如创建、删除等

就像对文件操作需要os模块一样,如果要操作文件夹,同样需要os模块

<1>创建文件夹

import os

os.mkdir("张三")

<2>获取当前目录

import os

os.getcwd()

<3>改变默认目录

import os

os.chdir("../")

<4>获取目录列表

import os

os.listdir("./")

<5>删除文件夹

import os

os.rmdir("张三")

 

示例:应用【面试题】:批量修改文件名

源文件:

 

[root@rs1 renameDir]# ll
总用量 0
drwxr-xr-x 2 root root 6 9月 24 17:17 新三国-1.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 新三国-2.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 新三国-3.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 新三国-4.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 新三国-5.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 新三国-6.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 新三国-7.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 新三国-8.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 新三国-9.txt

 

修改后的文件:

[root@rs1 enameDir]# ll
总用量 0
drwxr-xr-x 2 root root 6 9月 24 17:17 [英皇出品]-新三国-1.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 [英皇出品]-新三国-2.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 [英皇出品]-新三国-3.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 [英皇出品]-新三国-4.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 [英皇出品]-新三国-5.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 [英皇出品]-新三国-6.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 [英皇出品]-新三国-7.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 [英皇出品]-新三国-8.txt
drwxr-xr-x 2 root root 6 9月 24 17:17 [英皇出品]-新三国-9.txt

#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)
View Code

6.3 文件内容的搜索和替换

文件内容的搜索和替换可以结合前面学习的字符串查找和替换来实现。例如,从 hello.txt 文件中查找字符串 “hello” ,并统计 “hello” 出现的次数。 hello.txt 文件如下所示。

1 hello world

3 hello hello China

下面这段代码从 hello.txt 中统计字符串 “hello” 的个数。

#文件的查找
import re
f1 = open('hello.txt')
count = 0
for s in f1.readlines():
    li = re.findall('hello',s)
    if len(li) > 0:
        count = count + li.count('hello')

print("查找到"+ str(count) + "个hello")
f1.close()

【代码说明】

口第 5行代码定义变量count,用于计算字符串 “hello” 出现的次数。

口第 6行代码每 次从文件 hello .txt中读取1行到变量。

口第7行代码调用re 模块的函数findall()查询变量s, 把查找的结果存储到列表li中。

口第8行代码, 如果列表中的元素个数大于0,则表示查找到字符串 “hello” 。

口第9行代码调用列 表的count()方法, 统计当前列表中 "hello"出现的次数。

口第10行代码输出结果:

下面这段代码把 hello .txt 中的字符串 “hello” 全部替换为 “hi” ,并把结果保持到文件hello2.txt中。

# 文件的替换
f1 = open("hello.txt")
f2 = open("hello2.txt","w")
for s in f1.readlines() :
    f2.write(s.replace('hello','hi'))
f1.close()
f2.close()

 

第 5行代码 先使用replace()把变量s中的“hello”替换为“hl,然后把结果写入到hello2.txt

中。 文件 hello2.txt的内容如下所示。

 

管理上下文

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

with open('log','r') as f:
    ...

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 及以后,with又支持同时对多个文件的上下文进行管理,即:

with open('log1') as obj1, open('log2') as obj2:
    pass

文件test.txt中包含以下内容:

今年是2017年。

2017年你好。

2017年再见

1) 读取该文件,并输出所有内容。

2) 去掉文件内容中的换行。

3) 计算出文件的长度。

4 )使用欧冠2018替换 2017。

5 )创建另一个文件test2.txt, 写入本文件的内容。

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python--6 文件操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python--6 文件操作

文件通常用于存储数据或应用系统的参数。Python 提供了 OS、 os.path、 shutil 等模块处理文件, 其中包括打开文件、 读写文件、 复制和删除文件等函数。python文件操作基本流程: 1.打开文件,或者新建立一个文件2.
2023-01-30

python 文件操作api(文件操作函数)

python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来
2022-06-04

python 文件操作

python基本的文件操作,包括 open,read,write对文件操作流程:1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件新建一个txt文件,内容是《Yesterday When I Was Young
2023-01-30

python文件操作

1. 文件操作 open 打开 f = open(文件路径, mode="模式", encoding="编码格式") 最最底层操作的就是bytes 打开一个文件的时候获取到的是一个文件句柄.
2023-01-30

python 操作文件

python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。操作前需要 import os;返回当前目录,不包括文件名: os.getcwd();返回指定目录下的所有文件和目录名:os.listdir("dirn
2023-01-31

python---文件操作

一、对文件操作流程1.打开文件,得到文件句柄并赋值给一个变量2.通过文件句柄对文件进行操作3.关闭文件二、文件打开模式f = open("file_test","r",encoding = "utf-8")    #打开文件,“读模式”,只
2023-01-31

python-文件操作

文件操作1.  读 / 写 操作读取: r (read):只能读不能写,文件不存在就报错​#打开文件:    object = open('某txt文件',mode = 'r',encoding = '编码')​#读取文件所有内容到内存:
2023-01-31

Python--文件操作

文件处理流程1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件 r模式,默认模式,文件不存在则报错w模式,文件不存在则创建,文件存在则覆盖a模式,文件不存在则创建,文件存在则不会覆盖,写内容会以追加的方式写(写
2023-01-30

Python 操作.csv文件

import csvcsvfile = file('E:\\workspace\\data\\ex1.csv', 'rb')reader = csv.reader(csvfile)for line in reader:    print l
2023-01-31

Python之文件操作

Python可以对文件进行查看、创建等功能,可以对文件内容进行添加、修改、删除,且所使用到的函数在Python3.5.x为open,在Python2.7.x同时支持file和open,但是在3.5.x系列移除了file函数。Python文件
2023-01-31

Python的文件操作

读操作file = open('测试文件',mode='r',encoding='utf-8')print(file.read()) 写操作file = open('测试文件',mode='w',encoding='utf-8')file.
2023-01-30

3 Python文件操作

open以什么编码方式存储文件,就以什么编码方式打开f = open('d:\模特主妇护士班主任.txt',encoding='utf-8') # 绝对路径打开f.close()f = open('模特主妇护士班主任',encoding=
2023-01-31

Python文件IO操作

文件IO常用操作:open打开read读取write写入close关闭readline行读取readlines多行读取seek文件指针操作tell指针位置打开操作:open(file, mode='r', buffering=-1, enc
2023-01-31

python 文件操作2

继续讲解文件操作的其他内置方法读取文件句柄的指针指针,就是说,程序读取文件到哪一行了。f=open("Yesterday.txt",r,encoding="utf-8")print(f.tell())执行输出 0默认是从0行开始读取的。读取
2023-01-30

python文件的操作

首先看看在pycharm输入文件句柄,怎样显示他的定义f = open('student_msg', encoding='utf-8', mode='a+') # 打开一个文件,赋值给fprint(type(f), f) # f文件句柄是
2023-01-31

python文件操作一

Python 提供了必要的函数和方法进行默认情况下的文件基本操作open()函数语法:File_object= open(file_name [, access_mode][, buffering])file_name:file_name变
2023-01-31

python文件操作二

1、常用函数:fileObject.read([size])size为读取的长度,以byte为单位。如果不指定参数,表示一次性读取全部内容,以字符串形式返回,并且每一行结尾会有一个"\n"符号。代码示例1:with open("text.t
2023-01-31

python操作Xml文件

一、简单介绍Xml是实现不同语言或程序进行数据交换的协议,跟json差不多,但是xml远远先于json出现,例如在很多传统的金融行业的很多系统接口还主要是xml格式。Xml的格式如下:2023-01-31

【Python】Python读写文件操作

原帖地址:http://blog.csdn.net/adupt/article/details/44356151.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录