文件自动化处理

2023-10-26

1.1 读写文件

我们知道,程序运行时,可以用变量来保存运算结果,但如果希望程序运行关闭后,依然可以查看运行后的结果,就需要将数据保存到文件中。该篇博客就是使用python在硬盘上创建、读取和保存文件的一篇博客。

1.1.1 文件与文件路径

文件的两个属性:“路径”和“文件名”,路径指明文件在计算机上的位置,文件名是指该位置的文件的名称。
在Windows上,用“\”作为文件夹之间的分隔符,而在OS X和Linux上,“/”作为路径分隔符。
在这里插入图片描述

1.1.2 当前工作目录

每个运行在计算机上的程序,都有一个“当前工作目录”。利用os.getcwd()函数,可以取得当前工作路径的字符串,并可以利用os.chdir()改变它。
在这里插入图片描述

1.1.3 路径操作

1.1.3.1 绝对路径和相对路径

“绝对路径”,总是从根文件夹开始的。

“相对路径”,相对于程序的当前工作目录。

相对路径中,“.”表示当前目录的缩写,“…”表示父文件夹。

几个常用的绝对路径和相对路径处理函数
os.path.abspath(path):将相对路径转化为绝对路径,将返回参数的绝对路径的字符串。
os.path.isabs(path):判断是否是绝对路径,是返回True,不是则返回False。

在这里插入图片描述

1.1.3.2 路径操作

os.path.relpath(path,start):返回从start路径到path的相对路径的字符串。如果没提供start,就使用当前工作目录作为开始路径。
os.path.dirname(path):返回当前路径的目录名称。
os.path.basename(path):返回当前路径的文件名称
在这里插入图片描述

如果同时需要一个路径的目录名称和基本名称,可以调用os.path.split(),获得这两个字符串的元组。
在这里插入图片描述

我们也可以调用os.path.dirname()和os.path.basename(),将它们的返回值放在一个元组中,从而得到同样的元组。效果同上。

如果我们想返回每个文件夹的字符串的列表。用os.path.split()无法得到,我们可以用split()字符串方法,并根据os.sep中的字符串进行分割。path.sep变量设置为正确的文件夹分割斜杠。
在这里插入图片描述

1.1.3.3 路径有效性检查

如果提供的路径不存在,很多python函数就会崩溃并报错。os.path模版提供了一些函数,用于检测给定的路径是否存在,以及判定是文件还是文件夹。

os.path.exists(path):如果path参数所指的文件或文件夹存在,则返回True,否则返回Flase。
os.path.isfile(path):如果path参数存在,并且是一个文件,则返回True,否则返回False。
os.path.isdir(path):如果path参数存在,并且是一个文件夹,则返回True,否则返回False。

1.1.4 文件及文件夹操作

1.1.4.1 用os.makedirs()创建新文件夹

注:os.makedirs()可以创建所有必要的中间文件夹。在这里插入图片描述
如上图,该文件夹已存在,不会覆盖,所以报错。

1.1.4.2 查看文件大小和文件夹内容

我们已经可以处理文件路径,这是操作文件及文件夹的基础。接下来,我们可以搜集特定文件和文件夹的信息。os.path模块提供了一些函数,用于查看文件的字节数以及给定文件夹中的文件和子文件夹。
os.path.getsize(path):返回path参数中文件的字节数。
os.listdir(path):返回文件名字符串的列表,包含path参数中的每个文件。
在这里插入图片描述
如果想知道目录下所有文件的总字节数,可以同时使用os.path.getsize()os.listdir()
在这里插入图片描述

1.1.6 文件读写过程

读写文件3个步骤:

1.调用open()函数,返回一个File对象。

2.调用File对象的read()write()方法。

3.调用File对象的close()方法,关闭该文件。

1.1.6.1 用open()函数打开文件

要用open()函数打开一个文件,就要向它传递一个字符串路径,表明希望打开的文件。这既可以是绝对路径,也可以是相对路径。open()函数返回一个File对象。
在这里插入图片描述
可以看到,调用open()函数将会返回一个File对象。当你需要读取或写入该文件,就可以调用File对象的方法。

1.1.6.2 读取文件内容

有了File对象,我们就可以开始从它读取内容。
read():读取文件内容。

readlines():按行读取文件中的内容,取得一个字符串列表,列表中每个字符串是文本中的一行且以\n结束。
在这里插入图片描述

1.1.6.3 写入文件

需要用“写模式”‘w’和“添加模式”'a’打开一个文件,而不能用读模式打开文件。
“写模式”将覆写原有的文件,从头开始。“添加模式”将在已有文件的末尾添加文本。
注意,write()方法不会像print()函数那样,在字符串的末尾自动添加换行字符。必须自己添加该字符。

1.1.6.4 保存变量

1)、shelve模块

shelve模块,可以将Python中的变量保存到二进制的shelf文件中。这样,程序就可以从硬盘中恢复变量的数据。
在这里插入图片描述
在OS X上,只会创建一个data.db文件。

重新打开这些文件,取出数据。注意:shelf值不必用读模式或写模式打开,因为打开后,既能读又能写。
在这里插入图片描述
就像字典一样,shelf值有keys()values()方法,返回shelf中键和值的类似列表的值。但是这些方法返回类似列表的值,却不是真正的列表,所以应该将它们传递给list()函数,取得列表的形式。
在这里插入图片描述

2)、用pprint.pformat()函数保存变量

pprint.pformat()函数返回要打印的内容的文本字符串,这个字符串既易于阅读,也是语法上正确的Python代码。

假如,有一个字典,保存在一个变量中,希望保存这个变量和它的内容,以便将来使用。pprint.pformat()函数将提供一个字符串,我们可以将它写入.py文件。这个文件可以成为我们自己的模块,如果需要使用存储其中的变量,就可以导入它。

import语句导入的模块本身就是Python脚本。如果来自pprint.pformat()的字符串保存为一个.py文件,该文件就是一个可以导入的模块
在这里插入图片描述

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

文件自动化处理 的相关文章

  • 有没有一种方法可以将python对象直接存储在mongoDB中而不需要序列化它们

    我在某处读到过 您可以使用 BSON 将 python 对象 更具体地说是字典 作为二进制文件存储在 MongoDB 中 但是现在我找不到任何与此相关的文档 有人知道具体如何做到这一点吗 没有办法在不序列化的情况下将对象存储在文件 数据库
  • 从 SHAP 值中获取特征重要性

    我想要获得重要功能的数据框 通过下面的代码 我得到了 shap values 但我不确定这些值的含义是什么 在我的 df 中有 142 个特征和 67 个实验 但得到了一个带有 ca 的数组 2500 个值 explainer shap T
  • 在 Pandas 中,如何从基于另一个数据框的数据框中删除行?

    我有 2 个数据框 一个名为 USERS 另一个名为 EXCLUDE 他们都有一个名为 电子邮件 的字段 基本上 我想删除 USERS 中包含 EXCLUDE 中包含电子邮件的每一行 我该怎么做 您可以使用boolean indexing
  • 使用 Python 创建 MIDI

    本质上 我正在尝试从头开始创建 MIDI 并将它们放到网上 我对不同的语言持开放态度 但更喜欢使用Python 两种语言之一 如果这有什么区别的话 并且想知道我应该使用哪个库 提前致谢 看起来这就是您正在寻找的 适用于 Python 的简单
  • TensorFlow:带有轴选项的 bincount

    在 TensorFlow 中 我可以使用 tf bincount 获取数组中每个元素的计数 x tf placeholder tf int32 None freq tf bincount x tf Session run freq feed
  • numpy python 中的“AttributeError:'matrix'对象没有属性'strftime'”错误

    我有一个维度为 72000 1 的矩阵 该矩阵涉及时间戳 我想使用 strftime 如下所示 strftime d m y 为了得到像这样的输出 11 03 02 我有这样一个矩阵 M np matrix timestamps 我使用了
  • 在Python中如何获取字典的部分视图?

    是否有可能获得部分视图dict在Python中类似于pandasdf tail df head 说你有很长一段时间dict 而您只想检查某些元素 开头 结尾等 dict 就像是 dict head 3 To see the first 3
  • Python中列表中两个连续元素的平均值

    我有一个偶数个浮点数的列表 2 34 3 45 4 56 1 23 2 34 7 89 我的任务是计算 1 和 2 个元素 3 和 4 5 和 6 等元素的平均值 在 Python 中执行此操作的快捷方法是什么 data 2 34 3 45
  • ValueError:不支持连续[重复]

    这个问题在这里已经有答案了 我正在使用 GridSearchCV 进行线性回归的交叉验证 不是分类器也不是逻辑回归 我还使用 StandardScaler 对 X 进行标准化 我的数据框有 17 个特征 X 和 5 个目标 y 观察 约11
  • 如何使用 javascript/jquery/AJAX 调用 Django REST API?

    我想使用 Javascript jQuery AJAX 在前端调用 Django Rest API 请求方法是 POST 但当我看到 API 调用它的调用 OPTIONS 方法时 所以 我开始了解access control allow o
  • Python Django-如何从输入文件标签读取文件?

    我不想将文件保存在我的服务器上 我只想在下一页中读取并打印该文件 现在我有这个 index html
  • `pyqt5'错误`元数据生成失败`

    我正在尝试安装pyqt5使用带有 M1 芯片和 Python 3 9 12 的 mac 操作系统 我怀疑M1芯片可能是原因 我收到一个错误metadata generation failed 最小工作示例 directly in the t
  • 在 Spyder 的变量资源管理器中查看局部变量

    我是 python 新手 正在使用 Spyder 的 IDE 我欣赏它的一项功能是它的变量资源管理器 然而 根据一些研究 我发现它只显示全局变量 我找到的解决方法是使用检查模块 import inspect local vars def m
  • 使用 NLP 进行地址分割

    我目前正在开发一个项目 该项目应识别地址的每个部分 例如来自 str Jack London 121 Corvallis ARAD ap 1603 973130 输出应如下所示 street name Jack London no 121
  • PIL - 需要抖动,但限制调色板会导致问题

    我是 Python 新手 正在尝试使用 PIL 来执行 Arduino 项目所需的解析任务 这个问题涉及到Image convert 方法以及调色板 抖动等选项 我有一些硬件能够一次仅显示 16 种颜色的图像 但它们可以指定为 RGB 三元
  • 从列表python的单个列表中删除子列表

    我已经经历过从列表列表中删除子列表 https stackoverflow com questions 47209786 removing sublists from a list of lists 但当我为我的数据集扩展它时 它不适用于我
  • 操作错误:(sqlite3.OperationalError) SQL 变量太多,同时将 SQL 与数据帧一起使用

    我有一个熊猫数据框 如下所示 activity User Id 0 VIEWED MOVIE 158d292ec18a49 1 VIEWED MOVIE 158d292ec18a49 2 VIEWED MOVIE 158d292ec18a4
  • 通过 Web 界面执行 python 单元测试

    是否可以通过 Web 界面执行单元测试 如果可以 如何执行 EDIT 现在我想要结果 对于测试 我希望它们是自动化的 可能每次我对代码进行更改时 抱歉我忘了说得更清楚 EDIT 这个答案此时已经过时了 Use Jenkins https j
  • 使用 Python 将对象列表转为 JSON

    我在转换时遇到问题Object实例到 JSON ob Object list name scaping myObj base url u number page for ob in list name json string json du
  • python 中的 after() 与 update()

    我是 python 新手 开始使用 tkinter 作为画布 到目前为止 我使用 update 来更新我的画布 但还有一个 after 方法 谁能给我解释一下这个函数 请举个例子 两者之间有什么区别 root after integer c

随机推荐

  • JavaSE之注释规范、文档注释及注解

    Java中的注释不会出现在可执行程序中 有三种标记注释的方式 1 单行注释 2 多行注释 3 文档注释 一 注释可以帮助我们更清晰地阅读代码 了解代码 在 阿里巴巴Java开发手册中 也对注释作了规约 注释规约如下 1 强制 类 类属性 类
  • RuntimeException

    运行时异常可以理解为 隶属于开发者的问题 代码有bug肯定要开发者自己修正啊 处理RuntimeException 不是try catch能解决的 try catch在这里使用毫无意义 编译时异常可以理解为 隶属于用户的问题 用户用的时候没
  • Java Timer定制每天特定时间执行任务

    package com segsec gisap import java util Calendar import java util Date import java util Timer import java util TimerTa
  • JVM垃圾回收器 七种经典垃圾回收器

    文章目录 垃圾回收器概述 评估GC的性能指标 吞吐量 throughput 暂停时间 pause time 七种经典的垃圾回收器 垃圾收集器组合关系 Serial回收器 串行回收 ParNew回收器 并行回收 Parallel Scaven
  • 【华为OD机试 2023】 网上商城优惠活动 / 模拟商场优惠打折II(C++ Java Javascript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • 阿里云NAS文件存储基本介绍与购买使用

    文章目录 1 NAS文件存储基本概念 1 1 什么是NAS文件存储 1 2 NAS的应用场景 1 3 NAS OSS EBS的区别 2 购买NAS文件存储 2 1 开通NAS服务 2 2 创建NAS文件系统 2 3 配置NAS文件系统属性
  • Docker Harbor 私有镜像仓库的部署和管理

    目录 一 什么是Harbor 二 Harbor的特性 三 Harbor的构成 四 部署配置Docker Harbor 首先需要安装 Docker Compose 服务 部署 Harbor 服务 修改配置文件 docker配置文件添加本地仓库
  • 蚁群算法(ACO)分析总结(Matlab+C#模拟解决TSP旅行商问题)

    蚁群算法 1 1 简介 1 2 整体框架 1 3 蚁群算法的基本要素 1 3 1 信息素的正反馈机制 1 3 2 信息素的更新策略 1 3 3 算法停止准则 1 4 蚂蚁个体的建模问题 1 5 蚁群算法的重要参数 1 6 蚁群算法的基本流程
  • 怎么判断私网地址_如何判断一个IP地址是私有地址

    如何判断一个IP地址是私有地址 首先 我们得先了解什么是私有地址 本文所指的IP地址 皆是IPV4 一个IPV4地址 由四段组成 最大值为255 一个IP地址其实就是一个32位的bit串 每8位一段 所谓私有地址 就是非注册地址 只能做内网
  • char数组和指针问题

    这个问题是C 基础问题中相当折腾人的一个 死记硬背解决不了根本问题 记住还是要忘 需要仔细研究其本质 这两种方式就是数组和指针的方式 char a 6 abcde char b abcde 第一行声明了并初始化了一个char数组 第二行是声
  • 从传统软件开发到云原生转型:大数据和AI如何引领软件开发的新趋势

    文章目录 1 数据驱动的开发 2 智能化的用户体验 3 云原生的可扩展性 4 实时处理和决策 5 自动化和效率提升 6 持续集成和交付的加速 7 数据安全和隐私 8 持续学习和创新 个人主页 程序员 小侯 CSDN新晋作者 欢迎 点赞 评论
  • C语言:IP地址

    题目 include
  • C6385:从“buffer”中读取的数据无效: 可读大小为“recv()`72”个字节,但可能读取了“25”个字节。

    C 网络编程中接收结构体对象遇到的问题 想从客户端发送一个结构体对象到服务器 在网上查询后发现可以在客户端用memcpy把结构体拷贝到字符串上发送给客户端 再在客户端把字符串转化为结构体 具体代码如下 结构体 typedef struct
  • 算法知识之最长公共子序列问题(动态规划)

    最近朋友让帮做个关于动态规划的最长公共子序列的问题 翻看以前的笔记并完成该题后 顺便写这样一篇文章 希望对大家有所帮助 同时也帮助自己回顾该知识点 一 最长公共子序列的定义 子序列 若给定序列X x1 x2 xm 则另一序列Z z1 z2
  • 刷脸支付必定是站在时代舞台中央的新星

    2020年初这场突如其来的疫情 打乱了各行各业的节奏 据2019年中国刷脸支付技术应用社会价值专题研究报告预计 2022年刷脸支付市场规模将突破7 6亿人 这说明现在大家习惯的支付是扫码支付 而一两年后人们将形成全新的支付习惯 刷脸支付 疫
  • 【布局 Widget】 Flutter SizedBox

    Flutter Sizedbox 是一个 布局组件 用来给 child 添加 tight 约束的 也可以用来添加空白 width height是 Sizedbox 的参数 BoxConstraints get additionalConst
  • 用户名 不在 sudoers文件中,此事将被报告。

    sudo password for lkp lkp 不在 sudoers 文件中 此事将被报告 sudo命令可以让你以root身份执行命令 来完成一些我们这个帐号完成不了的任务 其实并非所有用户都能够执行sudo 因为有权限的用户都在 et
  • CTFshow web1~8 WP Write by SunnyDog

    文章目录 web签到题 查看源码 web2 SQL注入 web3 input伪协议 log注入 Web4 log注入 Web5 代码审计 Web6 SQL注入 但是过滤 Web7 SQL注入 Web8 脚本布尔盲注 web签到题 查看源码
  • 解决:c++: internal compiler error: Killed (program cc1plus)

    TOC 解决 c internal compiler error Killed program cc1plus 1 出现问题 博主在VMware虚拟机中安装sophus库 执行make命令时出现错误 如下图所示 2 分析问题 多方查找 确定
  • 文件自动化处理

    文件自动化处理 1 1 读写文件 1 1 1 文件与文件路径 1 1 2 当前工作目录 1 1 3 路径操作 1 1 3 1 绝对路径和相对路径 1 1 3 2 路径操作 1 1 3 3 路径有效性检查 1 1 4 文件及文件夹操作 1 1