首页 > 编程语言 >关于Python的学习记录(二十_文件的基本操作)

关于Python的学习记录(二十_文件的基本操作)

时间:2023-07-31 19:02:22浏览次数:42  
标签:文件 二十 Python encoding file 基本操作 txt open hello

实际开发中常常会遇到对数据进行持久化的场景,所谓持久化是指将数据从无法长久保存数据的存储介质(通常是内存)转移到可以长久保存数据的存储介质(通常是硬盘)中。实现数据持久化最直接简单的方式就是通过文件系统将数据保存到文件中。

计算机的文件系统是一种存储和组织计算机数据的方法,它使得对数据的访问和查找变得容易,文件系统使用文件树形目录的抽象逻辑概念代替了硬盘、光盘、闪存等物理设备的数据块概念,用户使用文件系统来保存数据时,不必关心数据实际保存在硬盘的哪个数据块上,只需要记住这个文件的路径和文件名。在写入新数据之前,用户不必关心硬盘上的哪个数据块没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。

打开和关闭文件

使用 Python 内置的 open 函数来打开文件,在使用open函数时,我们可以通过函数的参数指定文件名、操作模式和字符编码等信息

操作模式

具体含义

'r'

读取 (默认)

'w'

写入(会先清除之前的内容)

'a'

追加,将内容写入到已有文件的末尾

使用 open 函数打开文件成功后会返回一个文件对象,通过这个对象,我们就可以实现对文件的读写操作;如果打开文件失败,open 函数会引发异常,稍后会对此加以说明。如果要关闭打开的文件,可以使用文件对象的close方法,这样可以在结束文件操作时释放掉这个文件。

写文本文件

如果要向文件中写入内容,可以在打开文件时使用 w 或者 a 作为操作模式,前者会清除之前的文本内容写入新的内容,后者是在原来内容的尾部追加新的内容。

file = open('hello.txt', 'a', encoding='utf-8')
file.write('你好,Python4。\n')
file.close()

print('文件已写入')

读文本文件

open函数打开文本文件时,需要指定文件名并将文件的操作模式设置为'r',如果不指定,默认值也是'r';如果需要指定字符编码,可以传入 encoding 参数,如果不指定,默认值是 None,那么在读取文件时使用的是操作系统默认的编码。常用的编码类型都是 utf-8,如果不能保证保存文件时使用的编码方式与 encoding 参数指定的编码方式是一致的,那么就可能因无法解码字符而导致读取文件失败。

下面的例子演示了如何读取一个纯文本文件 hello.txt, 内容如下:

你好,Python1。
你好,Python2。
你好,Python3。
# 先写内容到文件中
file = open('hello.txt', 'a', encoding='utf-8')
file.write('你好,Python1。\n')
file.write('你好,Python2。\n')
file.write('你好,Python3。\n')
file.close()

# 读取文件
file = open('hello.txt', 'r', encoding='utf-8')
print(file.read())
file.close()

除了使用文件对象的 read 方法读取文件之外,还可以使用for-in循环逐行读取或者用readlines方法将文件按行读取到一个列表容器中,代码如下所示。

file = open('hello.txt', 'a', encoding='utf-8')
file.write('你好,Python1。\n')
file.write('你好,Python2。\n')
file.write('你好,Python3。\n')
file.close()

file = open('hello.txt', 'r', encoding='utf-8')
for line in file:
    print(line)
file.close()

file = open('hello.txt', 'r', encoding='utf-8')
lines = file.readlines()
for line in lines:
    print(line)
file.close()

读取文本文件读到的内容都是由字符串组成,即使里面都是数字,那也是字符串类型的数字,如果你需要进行运算,请先将这些数字转换成 int 或者 float 格式再处理。

使用 with 语句读写文件

Python 还提供一种 with-as 语法在做到在读写完文件后自动执行 close 逻辑。示例代码如下:

with open('hello.txt', 'a', encoding='utf-8') as f: # 别忘记末尾的冒号哦
    f.write('你好,Python5。\n')

with open('hello.txt', 'r', encoding='utf-8') as f2:
    print(f2.read())

在使用 with 语句时,不需要手动关闭文件,当 with 语句内部的逻辑执行完毕时,Python 会自动关闭文件。

标签:文件,二十,Python,encoding,file,基本操作,txt,open,hello
From: https://blog.51cto.com/u_16181955/6911587

相关文章

  • Python基础day56 Django URL分组设置
    URL函数的使用(支持正则表达式)#django1中使用的是urlurl('test',views.test),url函数的第一个参数是支持正则表达式的如果匹配到一个路由,就不在往下匹配,直接执行路由对应的视图函数#http://127.0.0.1:8000/test/是django默认设置的,django会先拿着test去匹配,如果匹配不......
  • python openqyxl 操作excel
    importosimportsysfromopenpyxlimportload_workbookclassExcel:#读取数据def__init__(self,excel_path,sheet_name):""":paramexcel_path:excel文件路径:xx/xxx.xlsx:paramsheet_name:需要打开表格名字:sheet1......
  • 在python文件操作中使用writelines()函数却报write()函数使用错误
    代码是这样的:1deffunc1():2file=open("test.txt","a+",encoding="utf-8")3list1=[("20","10")]4list2=[{"name":"Tom","age":20}]5file.writelines(li......
  • 安装python以及常用库
    1. 去官网下载python,并安装,笔者版本3.11.4。【安装完毕后建议重启编译器和控制台,以确保导入了最新的环境变量】2. 设置镜像,加快pip3的下载速度。pip3configsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple3. 安装numpy等  pip3installnum......
  • MegEngine Python 层模块串讲(下)
    在前面的文章中,我们简单介绍了在 MegEngineimperative 中的各模块以及它们的作用。对于新用户而言可能不太了解各个模块的使用方法,对于模块的结构和原理也是一头雾水。Python 作为现在深度学习领域的主流编程语言,其相关的模块自然也是深度学习框架的重中之重。模块串讲将对 ......
  • 【Python&目标识别】Labelimg标记深度学习(yolo)样本
    ​    人工智能、ai、深度学习已经火了很长一段时间了,但是还有很多小伙伴没有接触到这个行业,但大家应该多多少少听过,网上有些兼职就是拿电脑拉拉框、数据标注啥的,其实这就是在标记样本,供计算机去学习。所以今天跟大家分享下如何使用Labelimg去自己标记深度学习样本。......
  • 【Python】一键提取inp文件结构的脚本
    inp=input("输入文件路径:")#print(type(inp))ex_txt=inp+'-Struct.inp'inp=inp+'.inp'importref2=open(ex_txt,'w')withopen(inp,'r',encoding="utf-8")asf1:row_num=0foriinf1:......
  • Python 导入function和导入moudle的区别
    以pprint为例导入moudleimportpprint同比C#创建对象,可以通过moudle名访问其中定义的变量、函数、类是长期过程会将moudle定义加载到内存中,整个程序执行过程中均可使用访问方法moudleName.functionNamepprint.pprint(data)导入functionfrompprintimportpprint......
  • python 比较两个excel A有b没有
    importpandasaspd#读取第一个Excel文件df1=pd.read_excel('excel_file1.xlsx')#读取第二个Excel文件df2=pd.read_excel('excel_file2.xlsx')#找出在df1中存在但不在df2中的行missing_rows=df1[~df1['列名'].isin(df2['列名'])]#保存缺失的数据到新的E......
  • Python去除文本中的NUL(0x00)字符
    问题描述在python中将文本数据存储到PostgreSQL数据库中报以下错误ValueError:AstringliteralcannotcontainNUL(0x00)characters.原因PostgreSQL不支持在文本字段中存储NULL(0x00)字符(这与支持文本中带有NULL值的数据库显然不同)。如果需要存储NULL字符,则可以使用byt......