Python学习之文件的创建与写入详解

目录
  • 内置函数 - open 获取文件对象
    • open() 函数
  • 利用文件对象进行创建与写入
    • 文件操作的写入模式
    • 文件对象的写入操作方法
  • 实战小案例

在前面章节我们通过 os包学习了如何创建、读取一个文件夹,但是并没有学习如何创建、读写一个文件,接下来我们就学习关于文件的处理。当我们学习完文件处理之后,就可以随意读写文件。

内置函数 - open 获取文件对象

open() 函数

open()函数是是python的读写文件的基本函数,它可以生成文件对象可以创建,也可以操作文件的读写。

用法:

open(path, mode)

参数说明:

path:文件路径

mode:操作模式;比如读文件的模式,写文件的模式。下文有详细介绍

返回值:

文件对象

示例用法如下:

file = open('d://test.txt', 'w')

# >>> 代码释义:使用 open() 函数 对 D 磁盘下的 'test.txt' 文件执行写入的操作 ( w 为写入的操作 ) 并赋值给变量 file

利用文件对象进行创建与写入

文件操作的写入模式

模式 介绍
w 创建文件(w为写入的操作,当文件不存在时,则会创建文件;已创建文件,则内容会被覆盖)
w+ 创建文件并读取文件
wb 二进制形式创建文件(与 w 的功能相同,只不过 web 的写入类型为 byte )
wb+ 二进制形式创建或追加内容(如果文件存在不会覆盖原本的内容,而是以 byte 类型进行追加)
a 在文件中追加内容,如果没有该文件则会创建文件
a+ 读写模式追加(同样是追加内容,只不过赋予了读取的功能)
ab+ 二进制形式读写追加(可以追加并读取 byte 类型的模式)

文件对象的写入操作方法

方法名 参数 介绍 举例
write Message(字符串) 写入信息
如果是带有b的模式,则会变为 byte 类型
f.write(‘hello\n’)
writelines Message_list(列表) 批量写入
列表内须是字符串,按照索引位置依次写入;
若为b的模式,同上
f.writelines([‘a\n’, ‘b\n’])
close 关闭并保存文件 f.close()

注意:操作文件完成后,必须使用 close 方法!!!不然可能会造成内存占用,如果反复生成文件对象进行写入操作,可能会造成内存溢出,我们的程序就会出问题了。

使用 w 模式 执行 write 方法

import os
import os.path

current_path = os.getcwd()
# print(current_path)

file_test = open(current_path + '/' + 'test.txt', 'w', encoding='utf-8')
# 注意如果是在WIN系统,在写入中文时,需要设置编码格式;如果不是WIN系统,则不需要设置编码格式

file_test.write('Python 是一门优雅的编程语言')
file_test.close()

上文脚本我们提及,如果是在WIN系统,在写入中文时,需要设置编码格式。如果不设置编码格式,虽然不会报错,也可以写入成功。但是打开写入的文件,就如同下图:

我们继上面演示的案例,在 text.txt 文件的基础上,继续演示 w 模式的功能。

import os
import os.path

current_path = os.getcwd()
# print(current_path)

file_test = open(current_path + '/' + 'test.txt', 'w', encoding='utf-8')
file_test.write('Python 是一门优雅的编程语言')
file_test.close()

file_path = os.path.join(current_path, 'test.txt')
file_test = open(file_path, 'w', encoding='utf-8')
file_test.write('Python 不仅是一门优雅的编程语言,还不掉头发')

可以看到我们针对 text.txt 文件的基础上,继续演示的 w 模式 新传入的 Python 不仅是一门优雅的编程语言,还不掉头发 已经覆盖了 text.txt 文件原本的内容。

使用 w+ 模式 执行 write 方法

这里我们先 利用 w+ 模式 写入内容

import os.path

current_path = os.getcwd()

file_path = os.path.join(current_path, 'test.txt')
file_test = open(file_path, 'w+', encoding='utf-8')
file_test.write('人生苦短 我用Python')
file_test.close()

区别于 w 模式,w+ 模式 不仅可以创建文件,还可以读取文件。下面我看看看 如何 读取文件。(需要注意的是,读取的操作需要在终端操作,Pycharm 不显示读取的结果)

import os.path

current_path = os.getcwd()

file_path = os.path.join(current_path, 'test.txt')
file_test = open(file_path, 'w+', encoding='utf-8')
file_test.write('人生苦短 我用Python')
file_test.read()
file_test.seek(0)
file_test.read()
file_test.close()

注意:只有 w+ 模式可以使用 read() 与 seek() 函数 读取文件内容 ,w 模式使用 read() 函数 读取文件内容会报错 ,如下图:

使用 ab 模式 执行 write 方法

我们先 使用 ab 模式 尝试将 字符串 通过 write 方法以追加的形式写入文件

import os.path

current_path = os.getcwd()

file_path = os.path.join(current_path, 'test.txt')
file_test = open(file_path, 'ab')
file_test.write('Python 是一种很有意思的编程语言')

终端执行效果如下:

由于我们传入的是 字符串类型 ,无法直接追加写入文件,那么我们 将字符串转为 byte 类型是否能成功呢?

这又是为何?难道我们使用方法的姿势不对?其实不然,这里写入的 byte 类型 我们需要先转为 byte 类型 才可以成功的写入。示例如下:

此时我们再次执行写入的动作,就可以将其追加写入文件。

file_test.write(_message)
file_test.close()

使用 a 模式 执行 writelines 方法

借着上面演示的案例,我们定义一个列表的字符串,然后 通过 open() 函数 的 a模式,使用 writelines 方法将内容写入文件

import os.path

current_path = os.getcwd()

file_path = os.path.join(current_path, 'test.txt')
file_list = ['\n今天天气不错\n', '挺风和日丽的\n', '我们下午没有课\n']
file_test = open(file_path, 'a')
file_test.writelines(file_list)
file_test.close()

执行效果如下图:

实战小案例

需求:实现一个可以自动创建 python 包 的函数

import os

def create_package(path):			# 定义一个创建 包 的函数
    if os.path.exists(path):		# 判断路径是否存在,若已经存在,则抛出异常
        raise Exception('%s 已经存在,不可创建' % path)
    else:
        os.mkdir(path)

    init_path = os.path.join(path, '__init__.py')
    file_init = open(init_path, 'w', encoding='utf-8')
    file_init.write('# coding:utf-8\n')
    file_init.close()

if __name__ == '__main__':
    current_path = os.getcwd()
    path = os.path.join(current_path, 'test_package')
    create_package(path)

执行结果如下:

拓展:从上文脚本中,我们可以发现每次,执行写入的时候,都要写入 \n 换行符,很是麻烦,我们可以自定义一个 open 类,从而实现每次我们执行写入操作时的自动换行。

class Open(object):
    def __init__(self, path, mode='w', is_return=True):     # 这里的 is_return 我们定义的是换行的意思,结合下文的 message 理解
        self.path = path
        self.mode = mode
        self.is_return = is_return

    def write(self, message):
        file_test = open(self.path, mode=self.mode)
        if self.is_return:      # 如果返回 Ture 则 在 message 后,增加换行符
            message = '%s\n' % message
        file_test.write(message)
        file_test.close()

if __name__ == '__main__':
    current_path = os.getcwd()
    # path = os.path.join(current_path, 'test_package')
    open_path = os.path.join(current_path, 'test_new_line.txt')
    # create_package(path)
    # create_package(open_path)
    open_test = Open(open_path)
    open_test.write('这是一段测试换行符的字符串信息')

执行结果如下:

到此这篇关于Python学习之文件的创建与写入详解的文章就介绍到这了,更多相关Python 文件创建 写入内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python创建文件夹与文件的快捷方法

    前言 Python快捷创建文件夹和文件详解 自己做文件时发现  简单的反复操作十分浪费时间,于是想到了 使用Python,这个分享给大家,快捷高效办公. 项目目录 file11 创建文件夹 file22 创建文件 1.创建文件夹 # 批量 创建文件夹 import os #倒入OS模块 创建文件夹 需要的 # 保存路径,直接从电脑文件夹中复制过来,但是 # 注意,直接复制过来的C:\English\LETS\雅思听力 路径结尾是没斜杠的. # 路径是需要 斜杠结尾的,否则 会以LETS为根目录,

  • Python 文本文件与csv文件的读取与写入

    目录 一.文本文件读取与写入 1读取文件的read()方法 2读取文件的readline()方法 3读取文件的readlines()方法 4写入文件的write()方法 5写入文件的writelines()方法 二.csv文件读取与写入 一.文本文件读取与写入 1 读取文件的 read() 方法 file_object.read([size]) file_object 表示文件对象 size 表示读取数据的长度,单位是字节,如果size省略则读至文件尾 返回值是读取到的字符串 2 读取文件的 r

  • python创建文本文件的简单方法

    python open() 函数以指定模式打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写. w 模式表示打开一个文件只用于写入.如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除.如果该文件不存在,创建新文件. write() 方法用于向文件中写入指定字符串.在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的. 实现代码: #!/usr/bin/python # -*- coding:utf-8 -*- file = o

  • Python创建临时文件和文件夹

    问题 你需要在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉. 解决方案 tempfile 模块中有很多的函数可以完成这任务. 为了创建一个匿名的临时文件,可以使用 tempfile.TemporaryFile : from tempfile import TemporaryFile with TemporaryFile('w+t') as f: # Read/write to the file f.write('Hello World\n') f.write('Testing

  • python创建模板文件及使用教程示例

    目录 写作思路 1.模板的定义 2.如何利用模板生成多个文件 运行结果 写作思路 1.模板的定义 2.如何利用模板生成多个文件 在很多情况下,我们会创建出很多样式相似甚至是相同的类文件,比如在Android文件创建的时候(由于Android Studio已经被我删除很久了,就没法实体展示).Visual Studio创建继承自虚方法的时候,创建出来的文件都已经自带了一些基础格式和基础方法 基于上述需求,有了利用模板类创建文件的功能 1.模板的定义 """ create in

  • python基础教程之csv格式文件的写入与读取

    目录 csv的简单介绍 csv的写入 第一种写入方法(通过创建writer对象) 第二种写入方法(使用DictWriter可以使用字典的方式将数据写入) csv的读取 通过reader()读取 通过dictreader()读取 总结 csv的简单介绍 CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本格式,用以存储表格数据,包括数字或者字符.很多程序在处理数据时都会碰到csv这种格式的文件.python自带了csv模

  • 如何基于Python创建目录文件夹

    这篇文章主要介绍了如何基于Python创建目录文件夹,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python对文件的操作还算是方便的,只需要包含os模块进来,使用相关函数即可实现目录的创建. 主要涉及到三个函数 1.os.path.exists(path) 判断一个目录是否存在 2.os.makedirs(path) 多层创建目录 3.os.mkdir(path) 创建目录 DEMO 直接上代码 def mkdir(path): # 引入模

  • Python学习之文件的创建与写入详解

    目录 内置函数 - open 获取文件对象 open() 函数 利用文件对象进行创建与写入 文件操作的写入模式 文件对象的写入操作方法 实战小案例 在前面章节我们通过 os包学习了如何创建.读取一个文件夹,但是并没有学习如何创建.读写一个文件,接下来我们就学习关于文件的处理.当我们学习完文件处理之后,就可以随意读写文件. 内置函数 - open 获取文件对象 open() 函数 open()函数是是python的读写文件的基本函数,它可以生成文件对象可以创建,也可以操作文件的读写. 用法: op

  • Python语法学习之线程的创建与常用方法详解

    目录 线程的创建与使用 线程的创建 -threading 线程对象的常用方法 线程演示案例 线程的问题 线程的创建与使用 在Python中有很多的多线程模块,其中 threading 模块就是比较常用的.下面就来看一下如何利用 threading 创建线程以及它的常用方法. 线程的创建 -threading 函数名 介绍 举例 Thread 创建线程 Thread(target, args) Thread 的动能介绍:通过调用 threading 模块的 Thread 类来实例化一个线程对象:它

  • Python语法学习之进程的创建与常用方法详解

    目录 进程的创建模块 - multiprocessing 创建进程函数 - Process 进程的常用方法 start 函数 join 函数 kill 函数 与 is_alive 函数 进程的相关问题 该章节我们来学习一下在 Python 中去创建并使用多进程的方法,通过学习该章节,我们将可以通过创建多个进程来帮助我们提高脚本执行的效率.可以认为缩短脚本执行的时间,就是提高执行我们脚本的效率.接下来让我们都看一下今天的章节知识点都有哪些? 进程的创建模块 - multiprocessing 创建

  • 使用 Python 破解压缩文件的密码的思路详解

    经常遇到百度网盘的压缩文件加密了,今天我们就破解它! 实现思路 上篇文章给大家介绍了爆破密码的思路,感兴趣的朋友可以了解下. 其实都大同小异:无非就是字典爆破,就看你是有现成密码字典,还是自己生成密码字典,然后进行循环输入密码,直到输入正确位置.现在很多都有防爆破限制,根本无法进行暴力破解,但是似乎zip这种大家都是用比较简单的密码而且没有什么限制. 因此 实现思路就是 生成字典->输入密码->成功解压 实现过程 1.  生成字典 生成密码字典其实就是一个字符组合的过程.小伙伴们可别用列表去组

  • Python学习之函数的定义与使用详解

    目录 函数的定义 函数的分类 函数的创建方法-def 函数的返回值-return return与print的区别 函数的传参 必传参数 默认参数 不确定参数(可变参数) 参数规则 函数小练习 函数的参数类型定义 全局变量与局部变量 全局变量 局部变量 global关键字 递归函数 递归函数的定义方法 递归函数的说明 lambda-匿名函数 函数练习 函数的定义 什么是函数? — > 函数是具有某种特定功能的代码块,可以重复使用(在前面数据类型相关章节,其实已经出现了很多 Python 内置函数了

  • Python基础之文件操作及光标移动详解

    目录 一.文件操作 1.文件的概念 2.代码打开文件的方式 二.文件读写模式 1.'r' 只读模式 read 2.'w' 只写模式 write 3.'a' 尾部追写模式 add 三.文件操作模式 1.t 文本模式 2.b 二进制模式 四.文件诸多方法 1.read() 2.for循环 3.line 4.readable 5.write 6.flush 五.文件内光标的移动 1.seek() 2.tell() 一.文件操作 1.文件的概念 1.文件就是计算机暴露给用户操作硬盘的快捷方式 2.计算机

  • Python学习之路安装pycharm的教程详解

    简介:pycharm 是一款功能强大的 Python 编辑器,具有跨平台性.下载地址 第一步:下载pycharm 软件 下载时会有两个版本供选择.Professional版(专业版)和Community版(社区版).建议安装Community版本,因为免费使用. 第二步:安装pycharm软件 1.找到下载的 .exe文件,双击运行安装.建议修改安装位置,软件不要总是安装在默认C盘,如下,我选择E盘. 2.接下来 3.接下来 4.Install 然后就是静静的等待安装了.如果我们之前没有下载有P

  • 对python修改xml文件的节点值方法详解

    这是我的xml文件结构 <?xml version='1.0' encoding='utf-8'?> <annotation> <folder>JPEGImages</folder> <filename>train_2018-05-08_1000.jpg</filename> <path>D:\all_data\2018-05-08\JPEGImages\train_2018-05-08_1000.jpg</path

  • Python学习之12个常用基础语法详解

    目录 前言 1.多个字符串组合为一个字符串 2.字符串拆分为子字符串列表 3.统计列表中元素的次数 4.使用try-except-else-block模块 5.使用枚举函数得到key/value对 6.检查对象的内存使用情况 7.合并字典 8.计算执行一段代码所花费的时间 9.列表展开 10.列表采样 11.数字化 12.检查列表元素的唯一性 前言 前几天写了一篇关于python高级语法的文章:python进阶从青铜到王者一定会用上的Python技巧. 有读者私信说:怎么看自己是不是入门pyth

  • Python学习之异常中的finally使用详解

    目录 finally的功能与用法 finally示例案例 finally触发的必然性与优先级 try语法伴随except或finally的必然性 finally的历史 今天我们来学习一下 异常语法 中的另一个成员 —> finally : 通过学习 finally ,可以帮助我们更好的处理异常. finally 的功能与用法 finally 的功能:finally的是最后的意思,配合异常的语法来说,它就是最后执行的代码块. 无论是否发生了异常,一定会执行 finally 的代码块 在函数中,即便

随机推荐