首页 > 编程语言 >Python文件操作

Python文件操作

时间:2023-09-13 11:47:23浏览次数:50  
标签:文件 读取 encoding Python 操作 print close open

Python文件操作

文件的编码

计算机只能识别:0和1,我们需要使用编码技术(密码本)将内容翻译成0和1存入。计算机中有许多可用编码:UTF-8、GBK、Big5等,不同的编码,将内容翻译的二进制也是不相同的。

编码

  • 编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。
  • 编码有许多中,我们最常用的是UTF-8编码

文件的读取

文件的操作步骤

  1. 打开文件
  2. 读写文件
  3. 关闭文件
    注意:可以只打开和关闭文件,不进行任何读写

文件的操作方法

  1. open(name, mode, encoding) 示例代码:f = open('文件地址', 'r', encoding=”UTF-8)

    • name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
    • mode:设置打开文件的模式(访问模式):只读、写入、追加等。
      • r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
      • w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。
        如果该文件不存在,创建新文件.
      • a:打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。
        如果该文件不存在,创建新文件进行写入。
    • encoding:编码格式(推荐使用UTF-8)
  2. read() 示例方法:文件对象.read(num)

    • num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
  3. readlines() 示例方法:文件对象.readlines()

    • readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
  4. readline() 示例方法:文件对象.readline()

    • 一次读取一行内容
  5. for循环读取文件

    for line in open("文件地址", "r"):
        print(line)
    
  6. close 示例方法:文件对象.close()

    • 关闭文件对象,(如果不关闭文件对象文件会被一只占用着)
  7. with open

    • 通过在with open的语句块中对文件进行操作
    • 可以在操作完成后自动关闭close文件,避免遗忘掉close方法
    • 语法:
    with open("文件地址", "r") as f:
        f.readlines()
    

操作方法汇总

编号 方法 描述
1 文件对象 = open(file, mode, encoding) 打开文件获得文件对象
2 文件对象.read(num) 读取指定长度字节,不指定num读取文件全部
3 文件对象.readline() 读取一行
4 文件对象.readlines() 读取全部行,得到列表
5 for line in 文件对象 for循环文件行,一次循环得到一行数据
6 文件对象.close() 关闭文件对象
7 with open() as f 通过with open语法打开文件,可以自动关闭
# 打开文件
f = open("E:/test.txt", "r", encoding="UTF-8")
print(type(f))

# 读取文件 read()
print(f"读取10个字节的内容是:{f.read(10)}")
print(f"read方法读取全部内容是:{f.read()}")
f.close()

print("---------------------------------readlines------------------------------------")

# 读取文件 readlines()
f = open("E:/test.txt", "r", encoding="UTF-8")
lines = f.readlines() # 读取文件的全部行,封装到列表中
print(f"lines的对象类型是:{type(lines)}")
print(f"lines的对象内容是:{lines}")
f.close()

print("---------------------------------readline------------------------------------")

# 读取文件 readline()
f = open("E:/test.txt", "r", encoding="UTF-8")
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(f"第一行数据:{line1}")
print(f"第二行数据:{line2}")
print(f"第三行数据:{line3}")
f.close()

print("---------------------------------for循环------------------------------------")

# for循环读取文件行
f = open("E:/test.txt", "r", encoding="UTF-8")
for line in f:
    print(f"每一行数据:{line}")

# 文件关闭
f.close()

print("---------------------------------with open------------------------------------")
# with open语法操作文件
with open("E:/test.txt", "r", encoding="UTF-8") as f:
    for line in f:
        print(f"每一行数据:{line}")

文件的写入

写入语法:open("文件名称", "w", encoding="UTF-8")
写入方法:

  • wirte(),写入内容
  • flush(),刷新内容到硬盘中

注意事项:

  • w模式,文件不存在,会创建新文件
  • w模式,文件存在,会清空原有内容
  • close()方法,带有flush()方法的功能
# 打开不存在的文件
f = open("E:/gta5.txt", "w", encoding="UTF-8")
# wirte写入
f.write("Hello World!!!")  # 将内容写入内存中
# flush刷新
f.flush()                  # 将内存中的积攒的内容,写入到硬盘的文件中
# 关闭文件
f.close()                  # close()方法,内置了flush的功能

# 打开一个存在的文件
f = open("E:/gta5.txt", "w", encoding="UTF-8")
# wirte写入
f.write("无敌")
# 关闭文件
f.close()

文件的追加

追加写入语法:open("文件名称", "a", encoding="UTF-8")
追加写入方法(和w模式一致):

  • wirte(),写入内容
  • flush(),刷新内容到硬盘中

追加注意事项:

  • a模式,文件不存在,会创建新文件
  • a模式,文件存在,会在原内容后面继续写入
  • 可以使用\n来写出换行符
f = open("E:/gta5.txt", "a", encoding="UTF-8")
# write写入 flush刷新
f.write("炒鸡")
# close关闭
f.close()

标签:文件,读取,encoding,Python,操作,print,close,open
From: https://www.cnblogs.com/zjh0420/p/17698580.html

相关文章

  • 洛谷 AT_past202005_i 行列操作 の 题解
    这道题最难的点在于用什么方法存储矩阵$a$和一个特殊的操作方式。要存矩阵$a$,最先想到的是二维数组,但是二维数组开不到$1\len\le10^5$,所以可以用一个长度为$2\cdotn$的一维数组$m$来存。当$i\len$时,让一维数组$m_{i}$负责存第$i$行的内容;而当$n+1\lei......
  • qt QFileDialog 保存文件 没有扩展名
    way1.根据selectedNameFilter 接受类型选择 您希望在选择不同文件类型时自动添加扩展名,您可以在用户选择文件后检查文件的扩展名并自动添加相应的扩展名。以下是一个示例,演示如何在用户选择文件后自动添加扩展名: QFileDialogdialog(this);dialog.setFileMode(QFileDial......
  • SpringCould总结 | 第八篇 工程加载配置中心的配置文件
    //工程结构//pom文件<projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">......
  • SpringBoot教程(二)springboot的配置文件
    一.springboot配置文件的类型application.propertiesapplication.yml项目结构,因为不可以同时使用这两种文件启动时任选一个放到resources下即可 二.properties配置文件的使用packagecom.lpinfo.shop.lpinfoshop;importorg.springframework.beans.factory.annotation.Autowi......
  • Python - unix timestamp 时间戳转换错误
    用python的时间转换函数,结果报错。想着这么基础的怎么会报错呢。fromdatetimeimportdatetime#timestampisnumberofsecondssince1970-01-01timestamp=1545730073#convertthetimestamptoadatetimeobjectinthelocaltimezonedt_object=datetime.from......
  • day八-Python之路 - Socket网络编程
    Python之路,Day8-Socket网络编程 本节内容Socket介绍Socket参数介绍基本Socket实例Socket实现多连接处理通过Socket实现简单SSH通过Socket实现文件传送作业:开发一个支持多用户在线的FTP程序  1.Socket介绍概念A networksocket isanendpointofacon......
  • 在线问诊 Python、FastAPI、Neo4j — 创建症状节点
    目录参考创建药品节点。importloggingfromutils.neo4j_providerimportdriverlogging.root.setLevel(logging.INFO)#并生成CQLdefgenerate_cql()->str:cql="""CREATE(symptom1:Symptom{name:"膝盖疼"}),(symptom2......
  • Error: Package: libselinux-python-2.2.2-6.el7.x86_64 (@anaconda) Requ
    ==========直接抛出问安装问题===场景安装nginx时相关的依赖包不配套问题 yum-yinstallgccpcre-develzlibzlib-developensslopenssl-devel ===系统centos7安装nginx====解决方案1.安装yum-utils相关工具yum-yinstallyum-utils2.清理yumyumcleanall3.清理未完成......
  • 如何在EasyDSS视频直播点播平台中单独保存录像计划文件?具体操作方法是什么?
    EasyDSS视频直播点播平台是一个集成了视频直播、点播、转码、管理、录像、检索、时移回看等多种功能的综合性平台。它能够提供音视频采集、视频推拉流、H.265编码视频播放、存储、分发等一系列优秀的视频能力服务。根据用户反馈,在视频直播点播平台EasyDSS中设置的片段形式的录像计......
  • BUG库(linux)tar文件解压: Exiting with failure status due to previous
    一.Bug场景描述linux下解压文件tar:Exitingwithfailurestatusduetopreviouserrors二.解决办法1.提升源权限chmod777 mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz2.提升目标路径权限chmod-R777 mysql3.sudo执行  ......