python文件操作的基础详细讲解(write、read、readlines、readline)

作者:ChenBinBini 时间:2021-04-05 19:31:44 

前言

python 文件操作、文件读写(write、read、readlines、readline)、文件的相关操作,简单易懂

1 文件操作

文件就是把一些数据存起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。

1.1 文件打开与关闭

1.1.1 打开文件

在python中,使用open函数,可以打开已经存在的文件,或者创建一个新文件,open(文件名,访问模式)

示例如下:

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

python文件操作的基础详细讲解(write、read、readlines、readline)

没有找到‘test.txt’文件,所以新建了‘test.txt’文件

python文件操作的基础详细讲解(write、read、readlines、readline)

1.1.2 关闭文件

close()

示例如下:

#新建一个文件,文件名为:test.txt
f = open(“text.txt”,”w”)
f.colse()#关闭这个文件

1.2 访问模式及说明

访问模式说明
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果改文件不存在,创建新文件用于读写。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头
wb+以二进制格式打开一个文件用于读写。如果改文件已存在则会覆盖。如果改文件不存在,创建新文件。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果改文件不存在,创建新文件用于读写。

2 文件读写

2.1 写数据(write)

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

示例如下:

#写
f = open("test.txt","w") #打开文件,w模式(写模式),文件不存在就新建
f.write("hello world,I am here!")   #将字符串写入文件中
f.close()   #关闭文件

写入的内容

python文件操作的基础详细讲解(write、read、readlines、readline)

2.2 读数据(read)

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

示例如下:

#读:read方法,读取指定的字符,开始时定位在文件头部,每执行一次向后移动指定字符数
f = open("test.txt","r")
content = f.read(5) #一次读五个字符
print(content)
print('-'*30)
content = f.read()
print(content)
f.close()

运行结果下图:

python文件操作的基础详细讲解(write、read、readlines、readline)

2.3 读数据(readlines)

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

python文件操作的基础详细讲解(write、read、readlines、readline)

示例如下:

f = open("test.txt","r")
content = f.readlines() # 一次性读取全部文件为列表,每行一个字符串
print(content) #['hello world,I am here!\n', 'hello world,I am here!\n', 'hello world,I am here!\n', 'hello world,I am here!\n',

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

运行结果下图:

python文件操作的基础详细讲解(write、read、readlines、readline)

2.3 读数据(readline)

readline一次读取一行

示例如下:

f = open("test.txt","r")
content = f.readline() #1:hello world,I am here!--1
print("1:%s"%content)

content = f.readline() #2:hello world,I am here!--2
print("2:%s"%content)
f.close()

运行结果下图:

python文件操作的基础详细讲解(write、read、readlines、readline)

3 文件的相关操作

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

3.1 文件重命名

os模块中的rename()可以完成对文件的重命名操作rename(需要修改的文件名,新的文件名)

import os
os.rename(“毕业论文.txt”,”毕业论文-最终版.txt”)

3.2 删除文件

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

remove(待删除的文件名)

import os
os.remove(“毕业论文.txt”)

3.3 创建文件夹

import os
os.mkdir(“张三”)

3.4 获取当前目录

import os
os.getcwd()

3.5 改变默认目录

import os
os.chdir(“../”)

补充:文件综合操作实例

将文件夹下所有图片名称加上'_fc'

python代码:

# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字符串
#'连接符'.join(list) 将列表组成字符串
def change_name(path):
    global i
    if not os.path.isdir(path) and not os.path.isfile(path):
        return False
    if os.path.isfile(path):
        file_path = os.path.split(path) #分割出目录与文件
        lists = file_path[1].split('.') #分割出文件与文件扩展名
        file_ext = lists[-1] #取出后缀名(列表切片操作)
        img_ext = ['bmp','jpeg','gif','psd','png','jpg']
        if file_ext in img_ext:
            os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
            i+=1 #注意这里的i是一个陷阱
        #或者
        #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
        #if file_ext in img_ext:
        #    print('ok---'+file_ext)
    elif os.path.isdir(path):
        for x in os.listdir(path):
            change_name(os.path.join(path,x)) #os.path.join()在路径处理上很有用

img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('程序运行耗时:%0.2f'%(c))
print('总共处理了 %s 张图片'%(i))

来源:https://blog.csdn.net/ChenBinBini/article/details/109520494

标签:python,文件,操作
0
投稿

猜你喜欢

  • oracle命令行删除与创建用户

    2008-01-02 17:01:00
  • GoLang调用链可视化go-callvis使用介绍

    2023-07-16 06:39:59
  • 详解Python图像处理库Pillow常用使用方法

    2022-07-17 11:04:53
  • CTF中的PHP特性函数解析之下篇

    2023-06-14 09:54:52
  • Python3如何使用range函数替代xrange函数

    2022-08-25 06:09:59
  • 正视WEB标准,一本全面的标准参考书

    2009-05-30 16:36:00
  • Django 如何实现文件上传下载

    2021-07-16 02:54:15
  • python编程webpy框架模板之def with学习

    2023-08-07 11:23:32
  • 网页制作前台之javascript

    2013-07-23 08:32:59
  • python 详解如何使用GPU大幅提高效率

    2023-08-24 19:45:46
  • python聊天室(虽然很简洁,但是可以用)

    2021-05-21 01:10:46
  • Python3环境安装Scrapy爬虫框架过程及常见错误

    2021-10-19 00:01:05
  • JS实现pasteHTML兼容ie,firefox,chrome的方法

    2023-09-21 01:55:10
  • 别人复制你网站的文章时自动加上注释

    2009-02-09 13:20:00
  • 检测tensorflow是否使用gpu进行计算的方式

    2021-11-19 11:24:33
  • Mysql使用Describe命令判断字段是否存在

    2011-04-25 18:27:00
  • python框架Django实战商城项目之工程搭建过程图文详解

    2022-12-16 16:25:57
  • 社会化音乐:在夹缝中生出花来

    2009-08-24 12:37:00
  • 通过不同的CSS设计字体大小来提高用户体验

    2008-12-10 19:17:00
  • 文章关键字替换带链接需要注意的两个问题

    2010-02-25 12:18:00
  • asp之家 网络编程 m.aspxhome.com