Python 文件操作(IO)

2023-11-15


前言

和其它编程语言一样,Python 也具有操作文件(I/O)的能力,比如打开文件、读取和追加数据、插入和删除数据、关闭文件、删除文件等。


一、打印到屏幕(print)

最简单的输出方法是用 print( )语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式

print("Python 是一个非常棒的语言,不是吗?")

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、读取键盘输入

Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:

  • raw_input
  • input

1.raw_input

raw_input( ) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符):

st = raw_input("请输入:")
print ("你输入的内容是: ", st)

2.input

input( ) 函数和 raw_input( ) 函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。

st = input("请输入:")
print ("你输入的内容是: ", st)

该处使用的url网络请求的数据。


三、读写文件

读文件

要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:

f = open('/Users/michael/test.txt', 'r', encoding="utf-8")
或
f=open("data.txt", encoding="utf-8")

标示符’r’表示读,如果不写标示符,默认为 ‘ r ’ 表示读

调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示

>>> f.read()
'Hello, world!'

最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

>>> f.close()

写文件

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件

>>> f = open('/Users/michael/test.txt', 'w')
>>> f.write('Hello, world!')
>>> f.close()

可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险:

with open('/Users/michael/test.txt', 'w') as f:
    f.write('Hello, world!')

要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码。

以’w’模式写入文件时,如果文件已存在,会直接覆盖(相当于删掉后新写入一个文件)。如果希望追加到文件末尾怎么办?可以传入’a’以追加(append)模式写入。

文件操作(API)

文件操作的详细概念

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 文件操作(IO) 的相关文章

  • 如何在 JPanel 上绘制后重新绘制它?

    我有一个继承自 JPanel 的组件 我在上面绘制了一个网格 现在我有一个 JComboBox 我希望用户能够在此处选择网格大小 然后按按钮进行网格更改 重新绘制网格 问题是它绘制了初始网格 但是一旦用户从 JComboBox 选择网格大小
  • 将 CSV 文件读入 Java 作为数据库表

    我发现了很多关于使用 Java 读取 CSV 的帖子 并且他们所指向的 API 在读取 CSV 文件时都采用了面向行的方法 就像 当你得到一行时 获取每一列的值 我希望有一个更高级别的 API 比如在 Perl 中 DBI 允许您在 CSV
  • eclipse juno 打开时出错

    在安装 Eclipse 并正常工作一年多后 我今天打开 Eclipse Juno 并在打开工作区时收到一条错误消息 我使用的是 Windows 8 64 位 Java 64 位和 Eclipse 64 位 此后我尝试重新安装 Java 和
  • java.lang.NoClassDefFoundError:HttpSessionListener

    我正在尝试部署一场我没有编写的战争 但我在日志中收到此错误 java lang NoClassDefFoundError HttpSessionListener 我知道 HttpSessionListener 位于servlet api j
  • GSON:自定义对象反序列化

    好吧 我编辑了这个问题 因为它不够清楚 Edit 2 更新了 JSON 文件 我在 Android 应用程序中使用 GSON 我需要解析来自服务器的 JSON 文件 而且有点太复杂了 我不想让我的对象结构太重 所以我想简化内容 所以我的对象
  • 可以向 @ManyToMany Hibernate 额外表添加额外字段吗?

    我有这两类 表 Entity Table name course public class Course Id Column name courseid private String courseId Column name coursen
  • 从继承的受保护 Java 字段创建公共访问器

    我怎样才能完成以下工作 class Foo extends javax swing undo UndoManager increase visibility works for method override def editToBeUnd
  • (Java) 在 Mac OS X 上以编程方式访问“系统根目录”下的 SSL 证书

    我正在编写一个 Java 应用程序 它可以通过远程 Https 站点进行 REST Api 调用 远程站点由受信任的证书签名 它在 Windows 上运行良好 但由于 SSL 证书问题 在 OS X 上运行时遇到问题 我做了一些挖掘 发现原
  • 如何将 wsdl 内部架构设置为 Jaxb2Marshaller 以验证我所做的每篇文章?

    我正在使用 SOAP Web 服务 在调用它之前我必须验证每个 xml 帖子 所以我正在使用 The CXF codegen 插件生成POJO树结构 第三部分 wsdl xxxx soap service wsdl 一个类实现Web服务网关
  • 为什么 Java 中的 hashCode() 可以对不同对象返回相同的值?

    引用我正在读的书中的一段话首先Java http www amazon co uk Head First Java Kathy Sierra dp 0596009208 关键是 哈希码可以相同 但不一定保证对象相等 因为使用的 哈希算法 h
  • 如何将 currentTimeMillis 转换为可读的日期格式? [复制]

    这个问题在这里已经有答案了 我想用currentTimeMillis两次 这样我就可以计算持续时间 但我也想以用户可读的格式显示时间和日期 我遇到了麻烦currentTimeMillis有利于计算 但我看不到内置函数可以转换为合适的时间或时
  • Spring @Value 添加验证小于

    我使用以下属性值注入 我如何向此操作添加小于验证 我的意思是我想设置一个验证user maxpassiveday可以说 财产价值不得低于 100 Value user maxpassiveday int maxpassiveday 使用Sp
  • 比较和删除列表和数组java中不存在的元素

    我有一个String数组和一List
  • 如何在 Ivy 中使用不同的分类器下载多个 Maven 依赖项?

    我试图依靠Neo4j 服务器 jar http repo neo4j org content repositories snapshots org neo4j app neo4j server 1 5 SNAPSHOT neo4j serv
  • 如何使用 UUID 生成唯一的正 Long

    我需要为我的数据库主键列生成唯一的长 ID 我以为我可以用UUID randomUUID getMostSignificantBits 但有时它也会产生一些负多头 这对我来说是个问题 是否可以从 UUID 中仅生成正长 将会有数十亿个条目
  • 如何在 Spring Boot 中创建 Apache POI Excel 视图配置

    当我想使用 Spring Boot Web 将数据导出到 Excel 时遇到问题 我使用 Thymeleaf 作为模板引擎 由 Spring Boot 自动配置 但是当我在附加配置中添加 XmlViewResolver 时 由 XmlVie
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • Android - 保持用户登录状态

    我正在尝试使用 PHP 和 MySQLi for Android 进行登录 我不明白的是如何保持用户登录状态 我看到一个简单的教程 其中有人使用 SQLite 来保护信息 但我不知道这是否真的安全 如何保存用户信息以保持用户登录状态 谢谢
  • HashSet 与 LinkedHashSet

    它们之间有什么区别 我知道 LinkedHashSet 是 HashSet 的有序版本 维护一个跨所有元素的双向链接列表 使用此类代替 HashSet 当您关心迭代顺序时 当你迭代 HashSet 时 顺序是不可预测的 而 LinkedHa
  • Android应用程序中的模式输入

    我想知道是否有其他替代方案可以替代 Android 上平庸的 EditText 密码输入 是否有 API 或开源代码可以集成到我的应用程序中 类似于锁屏图案解锁 Intent 可能会返回哈希值 数字 字符串或代表用户输入的模式的任何内容 我

随机推荐

  • SQL注入攻击流程

    1 判断SQL注入点 本质原理是 找一个需要后台处理后提交给数据库的点 所有的输入只要和数据库进行交互的 都有可能触发SQL注入 一般为三大类 Get参数触发SQL注入 POST参数触发SQL注入 Cookie触发SQL注入 而验证是否存在
  • 华为手机打开图片很慢是怎么回事_华为手机相册打开很慢怎么解决?

    造成卡顿的原因 相册里存储信息较多 由于手机读取相册中的信息需要一定时间 可能出现卡顿现象 系统卡顿通用解决办法 请保持手机电量高于 20 手机低电量时为了延长待机时间 保护手机 会对手机的性能进行限制 卸载第三方手机管家类软件 如果您的手
  • 【Python】首届一年一度秀代码时间罒ω罒

    声明 以下代码大家如果有兴趣的话可以用LDLE代码编辑器运行看看 NO 1 万能计算器 难度系数 1 算术运算符 a input 请输入第一个数字 b input 请输入第二个数字 a float a b float b print 和 a
  • 小韭菜

    大家好 我是章鱼猫 今天给大家推荐的这个项目是 leeks 原名小韭菜 后改名为 leeks 这是一个 IDEA 查看股票 基金插件 写代码的同时还能瞄一眼股票 基金 真的是工作 搞基两不误 安装 下载当前最新的安装包 leeks 1 3
  • 解决 linux在 VMware中的问题 汇总 (***)

    目录 解决Ubuntu在VMware中不能全屏的问题 无需安装 VMware tools 解决虚拟机与宿主机的文件共享问题 Ubuntu Window下 X2Go 安装 连接 同步 上传文件夹 复制 粘贴 桌面共享 Linux挂载共享文件夹
  • 命令行中Gradle创建项目的打包和运行,新手起步

    第一步 下载 下载 https gradle org 官网 gt install gt releases page gt binary only 下载 下载页 https gradle org releases close notifica
  • vue中在字符串中添加点击事件

    如果你在用vue写项目中遇到了需要在字符串中写点击事件的奇葩写法 你会不会感到很头疼 我不知道你会不会 反正我肯定会 没办法谁叫咋遇到了呢 话不多说 直接上代码 html div class ml 12 mr 12 mt 8 div 采用的
  • 华为OD机试 - 可以组成网络的服务器(Java)

    题目描述 在一个机房中 服务器的位置标识在 n m 的整数矩阵网格中 1 表示单元格上有服务器 0 表示没有 如果两台服务器位于同一行或者同一列中紧邻的位置 则认为它们之间可以组成一个局域网 请你统计机房中最大的局域网包含的服务器个数 输入
  • Docker-compose安装及使用教程

    docker compose安装 方法一 首先执行pip V确认是否已安装pip 若提示 未找到命令 则根据以下步骤执行 若显示pip版本则直接执行步骤2安装即可 1 安装pip wget https bootstrap pypa io g
  • SpringBoot 中定时执行注解(@Scheduled、@EnableScheduling)

    项目开发中经常需要执行一些定时任务 比如需要在每天凌晨时候 分析一次前一天的日志信息 Spring为我们提供了异步执行任务调度的方式 提供TaskExecutor TaskScheduler 接口 SpringBoot中使用两个注解 Ena
  • C++中关于隐藏的理解

    引言 在使用中弄清楚隐藏的区别之后 还需要明白怎么使用 下面说以下隐藏 重写 重载的区别 与重载的区别 在父类与子类中 函数名相同 参数不同 无论父类中的同名函数是否含有virtual关键字 都是隐藏 与重写的区别 在父类和子类中 函数名相
  • MySQL引起索引失效的原因

    原创92 4 发布于2018 11 30 19 35 07 阅读数 451 收藏 展开 查看索引结构 mysql gt show index from staffs Table Non unique Key name Seq in inde
  • cmake_policy规定了cmake解析行为

    https blog csdn net gispipi article details 108275569
  • Python中字符串和列表去重方法

    本文主要为大家整理了Python中实现字符串和列表去重的常用方法 文中的示例代码讲解详细 对我们深入了解Python有一定的帮助 感兴趣的可以了解一下 字符串去重 1 直接遍历字符串的方式 1 2 3 4 5 6 7 8 coding UT
  • Redis第三讲 Redis 4.0 混合持久化与Redis数据备份策略

    RDB 和 AOF 持久化各有利弊 RDB 可能会导致一定时间内的数据丢失 而 AOF 由于文件较大则会影响 Redis 的启动速度 为了能同时使用 RDB 和 AOF 各种的优点 Redis 4 0 之后新增了混合持久化的方式 加载优先级
  • 【理论实践】指向类模板函数的指针的使用(以std::list为例)

    假设有这个一个场景 我们希望根据条件决定插入元素到list首或尾 条件判断一次 插入操作多次 例如二叉树 至少要处理左和右各一次 普通的代码很简单 每次操作时 都判断一下 简化一下是一个三元表达式 巧妙一点的 可以定义一个变量指定接口函数
  • QT学习笔记:多线程操作

    做了一个demo展示两种形式的多线程操作 第二种常用 new QThread Class Override run new Object Class moveToThread new QThread threadfirst h 第一种形式的
  • Js Jquery 关于endWith() 和startWith() 的使用

    javascript中字符串处理并没有 StartWith 和 EndWith 这俩个方法 这里说的是手动构建这俩个方法 JQuery 也是没有这俩个方法的 而是利用其丰富的选择器来达到此效果 首选javascript下着俩个函数的构建如下
  • RFC7296--Internet密钥交换协议版本2(IKEv2)

    2 8 密钥更新 rekeying IKE ESP和AH安全联盟 SA 使用的共享密钥应该只在有限的时间里保护优先的数据 这限制了整个SA的生存周期 生存周期超时的SA决不能再使用 如果有需要 可以建立新的SA 重建SA以取代过期的SA被称
  • Python 文件操作(IO)

    文章目录 前言 一 打印到屏幕 print 二 读取键盘输入 1 raw input 2 input 三 读写文件 读文件 写文件 前言 和其它编程语言一样 Python 也具有操作文件 I O 的能力 比如打开文件 读取和追加数据 插入和