Python 从入门到实战30(高级文件的操作)

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

        上篇文章我们讨论了操作目录的相关知识。今天我们将学习一下高级文件操作的相关知识。

        python 内置的os 模块除了可以对目录进行操作,还可以进行一些文件的高级操作。

os 提供的与文件相关的函数说明:

函数

说明

access(path,accessmode)

获取对文件是否有指定的访问权限(读取/写入/执行)accessmode的值R_OK(读取)、W_OK(写入)、X_OK(执行)、F_OK(存在)。若有指定权限返回1,否在返回0

chmod(path,mode)

修改path指定文件的权限

remove(path)

删除path指定的文件路径

rename(src,dst)

将文件或者目录修改为dst

stat(path)

返回path指定的文件信息

startfile(path,operation)

使用关联的应用程序打开path指定的文件

1、删除文件

python 中删除文件可以使用os模块提供的函数。

语法:os.remove(path)

其中path -----是要删除的文件路径,可以是相对路径或者绝对路径

举例说明;

import os   #导入模块
def main():
    if os.path.exists("test_fold.txt"):   #判断是否存在文件
        os.remove("test_fold.txt")    #存在文件执行删除
    else:
        print("要删除的文件不存在!")

如上执行,因为开始没有文件,数据结果:


若是我们新建一个再执行删除,

import os   #导入模块
def main():
    test_fold = 'test_fold.txt'
    if not os.path.exists(test_fold):  #文件不存在,先新建文件
        open(test_fold,'w')
    else:
        print("文件已经存在")
    if os.path.exists(test_fold):
        os.remove(test_fold)
        print("删除文件了")
    else:
        print("要删除的文件不存在!")

输出结果:删除文件了

2、重命名文件和目录

重命名文件或者目录使用os模块提供的rename()函数,

语法参考:os.rename(src,dst)

其中 src -----要重命名的原文件或者目录

dst-----重命名后的文件或者目录

1)重命名文件举例

test_demo.txt  我们开始是由这个文件的。将其进行重命名:

import os   #导入模块
def main():
    src = r'D:\dewi\project2024\myListPractice\pythonProject1\test_demo.txt'
    dst = r'D:\dewi\project2024\myListPractice\pythonProject1\test_demo1.txt'
    if os.path.exists(src):
        os.rename(src,dst)   #存在文件就重命名
        print("文件命名完毕")
    else:
        print("文件不存在")

输出参考:文件命名完毕

2)目录的命名

也是使用os.rename()函数,举例说明:

import os   #导入模块
def main():
    src = 'prc'
    dst = "practice"
    if os.path.exists(src):
        os.rename(src,dst)
    else:
        print(f"文件:{src}","不存在")

第一次执行:如下图,看到文件夹被改变为practice

再次执行:就会提示文件不存在,因为已经被修改了

3、获取文件基本信息

在计算机上创建文件后,该文件会包含一些信息。如文件最后一次访问时间、最后一次修改时间、文件大小等。这些信息可以使用os模块中的stat()函数来获取。

os.stat(path)

参数说明:path 是要获取的文件基本信息的文件路径,可以是相对路径,也可以是绝对路径;

此函数的返回值是一个对象,其具有下表所示的属性,通过访问这些属性,就可以获取指定文件的基本信息。

 stat()函数返回对象的常用属性:

属性

说明

属性

说明

st_mode

保护模式

st_dev

设备名

st_ino

索引号

st_uid

用户 ID

st_nlink

硬链接号(被连接数目)

st_gid

组 ID

st_size

文件大小,以字节为单位

st_atime

最后一次访问时间

st_mtime

文件最后一次修改时间

st_ctime

最后一次状态变化的时间,操作系统不会,该属性对应的结果也不同,例如在 Windows 操作系统下返回的就是文件的创建时间

举例说明:

import os   #导入模块
def main():
    fileinfo = os.stat("test_data.txt")#获取文件基本信息
    #下面输出文件基本信息
    print("索引号:", fileinfo.st_ino)
    print("设备名称:", fileinfo.st_dev)
    print("文件大小:", fileinfo.st_size, "字节")
    print("最后一次访问时间:", fileinfo.st_atime)
    print("最后一次修改时间:", fileinfo.st_mtime)
    print("最后一次状态变化的时间:", fileinfo.st_ctime)

输出结果参考:

查看上面的输出结果,看到时间有点看不懂,可以转换一下:

#时间转换函数:def formatOuttime(longtime):
    '''
   
时间进行格式化
    :param longtime:
要格式化的时间
    :return:
返回日常使用的时间
    '''
   
import time
    return time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(longtime))


def main():
    fileinfo = os.stat("test_data.txt")#获取文件基本信息
    #下面输出文件基本信息
    print("索引号:", fileinfo.st_ino)
    print("设备名称:", fileinfo.st_dev)
    print("文件大小:", fileinfo.st_size, "字节")
    print("最后一次访问时间:", formatOuttime(fileinfo.st_atime))#调用函数进行时间格式化输出
    print("最后一次修改时间:", fileinfo.st_mtime)
    print("最后一次状态变化的时间:", fileinfo.st_ctime)

输出结果参考:

4、补充一个小知识-输出带有字符串的变量

#输出带有字符串的变量方法:
#1、使用f - string
name = "Alice"
print(f"Hello, {name}!")

# 2、使用str.format() 方法
name = "xiaomi"
print("Hello, {}!".format(name))

#3、在字符串中使用 + 连接符来拼接变量
name = "小明"
print("Hello, " + name + "!")

#4、使用 % 操作符 (较老的方式,Python 2风格)
name = "xiaohua"
print("Hello, %s!" % name)

输出参考:

Hello, Alice!

Hello, xiaomi!

Hello, 小明!

Hello, xiaohua!

今天先写学习到这里了,每天进步一点点。明天也要加油啊!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/884055.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac系统Docker中SQLserver数据库文件恢复记录

Mac系统Docker中SQLserver数据库文件恢复记录 Mac想要安装SQLsever,通过docker去拉去镜像是最简单方法。 一、下载Docker Docker 下载安装: 需要‘科学上网’ 才能访问到docker官网。( https://docs.docker.com/desktop/install/mac-ins…

C语言进阶版第12课—字符函数和字符串函数1

文章目录 1. 字符分类函数1.1 库函数iscntrl1.2 库函数isspace1.3 库函数islower和isupper 2. 字符转换函数3. strlen函数的使用和模拟实现3.1 strlen函数的使用3.2 strlen函数的模拟实现 4. strcpy函数的使用和模拟实现4.1 strcpy函数的使用4.2 strcpy函数的模拟实现 5. strca…

C++读取txt文件中的句子在终端显示,同时操控鼠标滚轮(涉及:多线程,产生随机数,文件操作等)

文章目录 🌕运行效果🌕功能描述🌕代码🌙mian.cpp🌙include⭐MouseKeyControl.h⭐TipsManagement.h 🌙src⭐MouseControl.cpp⭐TipsManagement.cpp 🌕运行效果 🌕功能描述 线程一&am…

web前端-CSS引入方式

一、内部样式表 内部样式表(内嵌样式表)是写到html页面内部,是将所有的 CSS 代码抽取出来,单独放到一个<styie>标签中。 注意: ① <style>标签理论上可以放在 HTML文档的任何地方&#xff0c;但一般会放在文档的<head>标签中 ② 通过此种方式&#xff0c;可…

开发提效的工具tabby快速入门

1.什么是tabby&#xff1f; Tabby is an open-source, self-hosted AI coding assistant. With Tabby, every team can set up its own LLM-powered code completion server with ease. 官方网站&#xff1a;https://tabby.tabbyml.com/ 2.tabby服务安装(Hugging Face Spaces…

虚幻引擎的三种输入模式和将控件显示到屏幕上

首先要知道一个概念 , HUD 和 Input 都是由 PlayerController 来控制的 而虚幻的Input控制模式有三种 Set Input Mode Game Only (设置输入模式仅限游戏): 视角会跟着鼠标旋转 , 就是正常游戏的模式 , 这也是游戏默认输入模式 Set Input Mode UI Only (设置输入模式仅限UI): …

【C++】 vector 迭代器失效问题

【C】 vector 迭代器失效问题 一. 迭代器失效问题分析二. 对于vector可能会导致其迭代器失效的操作有&#xff1a;1. 会引起其底层空间改变的操作&#xff0c;都有可能是迭代器失效2. 指定位置元素的删除操作--erase3. Linux下&#xff0c;g编译器对迭代器失效的检测并不是非常…

通信工程学习:什么是FDD频分双工

FDD:频分双工 FDD(频分双工,Frequency Division Duplexing)是一种无线通信技术,它通过将频谱划分为上行和下行两个不重叠的频段来实现同时双向通信。以下是FDD频分双工的详细解释: 一、定义与原理 定义: FDD是一种无线通信系统的工作模式,其中上行链路(从移动…

每日OJ_牛客_OR59字符串中找出连续最长的数字串_双指针_C++_Java

目录 牛客_OR59字符串中找出连续最长的数字串 题目解析 C代码1 C代码2 C代码3 Java代码 牛客_OR59字符串中找出连续最长的数字串 字符串中找出连续最长的数字串_牛客题霸_牛客网 题目解析 双指针&#xff1a; 遍历整个字符串&#xff0c;遇到数字的时候&#xff0c;用双…

坚果N1 Air高亮版对比当贝D6X高亮版:谁是2000元预算的投影仪王者?

当贝D6X高亮版新品升级&#xff0c;对于那些计划在这个时间点购买投影仪的用户来说&#xff0c;现在是个绝佳的时机&#xff01;特别是那些预算在两千元左右的&#xff0c;目前两千元左右的投影仪&#xff0c;无外乎两款产品&#xff0c;当贝D6X高亮版和坚果N1 Air高亮版&#…

常见区块链数据模型介绍

除了加密技术和共识算法&#xff0c;区块链技术还依赖于一种数据模型&#xff0c;它决定了信息如何被结构化、验证和存储。数据模型定义了账户如何管理&#xff0c;状态转换如何发生&#xff0c;以及用户和开发者如何与系统交互。 在区块链技术的短暂历史中&#xff0c;数据…

13年408计算机考研-计算机网络

第一题&#xff1a; 解析&#xff1a;OSI体系结构 OSI参考模型&#xff0c;由下至上依次是&#xff1a;物理层-数据链路层-网络层-运输层-会话层-表示层-应用层。 A.对话管理显然属于会话层&#xff0c; B.数据格式转换&#xff0c;是表示层要解决的问题&#xff0c;很显然答案…

怎样用云手机进行TikTok矩阵运营?

在运营TikTok矩阵时&#xff0c;许多用户常常面临操作复杂、设备过多等问题。如果你也感到操作繁琐&#xff0c;不妨考虑使用云手机。云手机具备丰富的功能&#xff0c;能够帮助电商卖家快速打造高效的TikTok矩阵。接下来&#xff0c;我们将详细解析这些功能如何提升你的运营效…

智能化转型新篇章:EasyCVR引领大型连锁超市视频监控进入AI时代

随着科技的飞速发展&#xff0c;视频监控系统在各行各业中的应用日益广泛&#xff0c;大型连锁超市作为人员密集、商品繁多的公共场所&#xff0c;其安全监控显得尤为重要。为了提升超市的安全管理水平、减少损失、保障顾客和员工的安全&#xff0c;引入高效、全面的视频监控系…

Meta震撼发布Llama3.2大规模模型

在2024.9.26的年Meta Connect大会上&#xff0c;Meta正式推出了Llama3.2模型&#xff0c;旨在提升边缘AI和视觉任务的能力。Llama3.2系列包括11亿和90亿参数的中型视觉模型&#xff0c;以及为移动设备优化的1亿和3亿参数的小型模型&#xff0c;并针对高通和联发科的硬件平台进行…

Navicat数据库管理工具实现Excel、CSV文件导入到MySQL数据库

1.所需要的工具和环境 navicat等第三方数据库管理工具云服务器中安装了 1Panel面板搭建的mysql数据库 2.基于 1Panel启动mysql容器 2.1 环境要求 安装前请确保您的系统符合安装条件&#xff1a; 操作系统&#xff1a;支持主流 Linux 发行版本&#xff08;基于 Debian / Re…

C#和数据库高级:虚方法

文章目录 一、抽象方法和抽象类中的思考1.1、回顾抽象方法的特点1.2、针对抽象方法问题的引出 二、虚方法的使用步骤2.1、虚方法重写方法的调用2.2、系统自带的虚方法2.3、重写Equals方法2.4、虚方法和抽象方法的比较 三、虚方法和抽象方法的联系3.1、ToString()方法的应用 一、…

ARM点灯---看手册

知识点&#xff1a; 一个程序可能会遇到内存泄漏问题&#xff0c;可能一次运行泄漏几M大小&#xff0c;执行几个小时才会泄漏到站崩溃&#xff0c;所以要查看是否有内存泄漏。 查看手册教程 0927-上午 视频1&#xff1a;25&#xff1b;00 硬件程序开发流程 最小系统:单片…

单词的秘密3:从eight说起

单词的秘密&#xff0c;所谓秘密&#xff0c;就是指只有圈内的人知道&#xff08;而圈子往往代表了狭隘或某种专业性、独特或独占或垄断性&#xff09;&#xff0c;或者只有少数的人知道。 同样&#xff0c;一些单词的秘密&#xff0c;如果我不说&#xff0c;可能这一辈子&…

简单的spring缓存 Cacheable学习

简单的spring缓存 Cacheable学习 1.需求 项目中有很多的方法查询的数据其实是不会经常变的&#xff0c;但是其整体的查询sql以及调用第三方数据获取数据花费的时间很长&#xff0c;现在考虑对此类型的接口进行优化&#xff0c;首先想到的是对其进行缓存操作&#xff0c;所以简…