python中写入文件内容的操作方法,python写入文件
本文主要介绍Python中的文件处理,即如何创建、读写一个文件。本文中的示例代码有详细的解释,感兴趣的朋友可以和边肖一起学习。
00-1010内置函数-open获取文件对象open()函数使用文件对象创建和写入文件。文件对象的写入模式。实际案例。在前一章中,我们学习了如何通过os包创建和读取文件夹,但没有学习如何创建和读取文件。接下来,我们将学习文件处理。当我们学完了文件处理,就可以随意读写文件了。
目录
内置函数 - open 获取文件对象
open()函数是python读写文件的基本函数。它可以生成文件对象,创建文件,读写文件。
用法:
打开(路径,模式)
参数描述:
路径:文件路径
模式:操作模式;比如读文件的模式,写文件的模式。下面详细描述。
返回值:
目标
用法示例如下:
file=open(d://test.txt , w )
#代码定义:使用open()函数写入D盘上的 test.txt 文件(W是写操作)并赋给变量文件。
open() 函数
利用文件对象进行创建与写入
引入W模式创建文件(W是写的操作,当文件不存在时,会创建;文件创建后,内容将被覆盖。)W创建一个文件并读取它。wb创建一个二进制形式的文件(功能和W一样,只是web的书写类型是byte)。WB以二进制形式创建或追加内容(如果文件存在,它不会覆盖原始内容,而是以字节类型追加)。向文件追加内容。如果没有文件,它将创建一个读写模式的追加文件(同样的附加内容,但有读取的功能)。ab双星
文件操作的写入模式
方法参数引入了一个writeMessage (string)写信息的例子。
如果是带B的模式,就变成字节型f . Write( hello \ n )Write lines message _ list(list)批量写入。
列表必须是一个字符串,按照索引位置顺序书写;
如果模式为B,则与f相同. Write Lines ([a \ n , b \ n]) close不关闭保存文件f.close()注意:操作完文件后,必须使用close方法!否则可能会造成内存占用。如果重复生成文件对象进行写入,可能会造成内存溢出,我们的程序就会出现问题。
使用 w 模式 执行 write 方法
导入操作系统
导入os.path
current_path=os.getcwd()
#打印(当前路径)
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 osimport 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.pathcurrent_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.pathcurrent_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.pathcurrent_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.pathcurrent_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 osdef 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 文件创建 写入内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。