Python文件操作系统操作指南

在Python编程中,文件系统的管理是至关重要的技能之一,无论是读取文本文件、处理CSV数据、编写日志,还是进行文件和目录的创建、移动、复制、删除等操作。本指南将全面介绍如何利用Python标准库中的os和shutil模块来有效地管理和操作文件系统。

一、基本概念与导入模块

Python提供了`os`模块来与操作系统交互,包括文件和目录的管理。为了进行更复杂的文件操作,还可以使用`shutil`模块,它封装了一些高级文件和目录操作的功能。首先,确保导入这两个模块:
import os
import shutil

二、文件与目录操作基础

1. 获取当前工作目录

   利用`os.getcwd()`可以获取当前Python脚本所在的目录:
   current_dir = os.getcwd()
   print(current_dir)

2. 改变当前工作目录

   使用`os.chdir()`更改当前工作目录:
   os.chdir('/path/to/new/directory')

3. 创建目录

   若要创建一个新目录,可以使用`os.mkdir()`或`os.makedirs()`(用于创建多级目录):
   os.mkdir('new_directory')
   os.makedirs('new/sub/directory')

4. 列出目录内容

   `os.listdir()`返回指定目录下的文件和子目录名列表:
   filenames = os.listdir('.')

5. 判断路径是否存在

   使用`os.path.exists()`或`os.path.isdir()`/`os.path.isfile()`检查路径是否为存在的文件或目录:
   is_present = os.path.exists('path_to_file_or_dir')
   is_directory = os.path.isdir('path_to_dir')
   is_file = os.path.isfile('path_to_file')

三、文件操作

1. 打开和关闭文件

   使用内置的`open()`函数打开文件,通过`'r'`、`'w'`、`'a'`、`'x'`等方式指定读、写、追加或独占创建模式:
   with open('example.txt', 'w') as f:
       f.write('Hello, File System!\n')
   使用上下文管理器(`with`关键字)自动关闭文件,防止资源泄露。

2. 读取文件内容

   可以通过循环逐行读取文件,或者一次性读取全部内容:
   with open('example.txt', 'r') as f:
       lines = f.readlines()  # 逐行读取
       content = f.read()  # 全部读取

3. 重命名和删除文件

   使用`os.rename()`重命名文件,`os.remove()`或`os.unlink()`删除文件:
   os.rename('old_file.txt', 'new_file.txt')
   os.remove('file_to_delete.txt')

四、高级文件和目录操作

1. 复制文件和目录

   使用`shutil.copyfile()`复制单个文件,`shutil.copy()`复制文件的同时保留元数据,`shutil.copytree()`复制整个目录树:
   shutil.copyfile('source.txt', 'destination.txt')
   shutil.copy('source.txt', 'dir/destination.txt')
   shutil.copytree('src_dir', 'dst_dir')

2. 移动和重命名目录

   移动文件和目录实际上是重命名操作,因此可以使用`os.rename()`,对于跨越不同分区的情况,推荐使用`shutil.move()`:
   os.rename('current_dir', 'new_dir')
   shutil.move('src_file', 'dst_path')

3. 遍历目录及其子目录

   使用递归或者其他迭代方法遍历目录及其子目录的所有文件:
   for root, dirs, files in os.walk('top_level_directory'):
       for file in files:
           print(os.path.join(root, file))

五、路径操作

Python的`os.path`模块提供了很多处理路径的方法,如连接路径、分割路径、获取文件扩展名等:
absolute_path = os.path.abspath('relative/path')
joined_path = os.path.join('directory', 'filename.txt')
base_name = os.path.basename('/path/to/file.ext')
extension = os.path.splitext('file.ext')[1]

六、总结

通过深入学习Python的os和shutil模块,我们可以实现对文件和目录的各种复杂操作,使程序能够更好地适应不同的环境和需求。在实际开发过程中,遵循良好的文件操作习惯,如及时关闭打开的文件、妥善处理文件操作错误、谨慎对待跨平台兼容性问题等,都是保障代码稳定性和健壮性的关键因素。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车灯典型方案 H5528L 降压恒流芯片12V240V360V48V60V72V90V转9V12V 高低亮 性价比高

降压恒流芯片支持高低亮工作原理: 通过PWM(脉冲宽度调制)技术来调节开关管的开关时间,从而实现稳定的输出电压和电流,保持LED灯的亮度稳定。当需要调节LED灯的亮度时,可以通过改变PWM信号的占空比来实现。…

【信号分析】01/说在前面

全课程思维 #mermaid-svg-va4HsweZFSOJpLXa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-va4HsweZFSOJpLXa .error-icon{fill:#552222;}#mermaid-svg-va4HsweZFSOJpLXa .error-text{fill:#552222;stroke:#552222;…

软件设计模式之访问者模式(Visitor Pattern)

访问者模式是一种行为型设计模式,它允许你定义一系列操作,这些操作可以应用于对象结构中的元素,而不改变这些元素的类。通过这种方式,可以在不改变各个元素的类的情况下,增加新的操作。 1. 何时使用访问者模式&#x…

在手机浏览器中打开指定的应用商店

前言 大牛:你们这应用下载太慢了,为何不跳转到手机自带的应用商店下载,还不占用你们服务器的资源! 程序猿:哇!!!是的啊! 一、如何区分现在运行在哪一个厂商的手机里面&…

Bert-as-service 实战

参考:bert-as-service 详细使用指南写给初学者-CSDN博客 GitHub - ymcui/Chinese-BERT-wwm: Pre-Training with Whole Word Masking for Chinese BERT(中文BERT-wwm系列模型) 下载:https://storage.googleapis.com/bert_models/…

hive执行select count(1)返回0

背景: 做数据质量检核任务的时候,有些数据表有数据,直接查hive执行select count(1) from table返回的值一直是0 问题原因: hive通过select count(1)或者select count(*) 查询的是元数据库里面的rownum,如果数据表数据是通过load、…

使用Django的admin功能管理数据_vscode

之前的文章 项目 hello_django, app名 hello,已有的model LogMessage: https://blog.csdn.net/weixin_44741835/article/details/136202771?spm1001.2014.3001.5502 参考得到电子书:第八章。 https://www.dedao.cn/ebook/reader?idrEQKv6…

linux系统-----------搭建LNMP 架构

PHP(Hypertext Preprocessor 超文本预处理器)是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可…

能在手机上运行,仅仅0.5B大小的小语言模型MobiLlama

模型介绍 该模型基于LLaMA-7B架构设计,旨在能够在边缘设备上高效运行,无需将数据发送到远程服务器或云端处理。如智能手机、平板电脑、智能手表等。MobiLlama模型虽然体积小、对资源的需求低,但仍能提供高精度的语言理解和生成能力。项目还提…

java 通过 microsoft graph 调用outlook

废话不多说 一 官方文档 先看一下官方文档,https://learn.microsoft.com/zh-cn/graph/tutorials/java?contextoutlook%2Fcontext&tabsaad&tutorial-step1 其中的代码,可以通过地址下载:https://developer.microsoft.com/en-us/gra…

NutUI + taro +vue 开发遇到的问题 使用popup组件 内部元素滚动遇到的的问题

1 popup 弹出内容时 弹出的框内元素数据很长需要滚动时 本地可以正常滚动 打包成小程序后无法滚动 如这样的免责条款内容 代码如下 解决办法 1 把2处的单位换成百分比 弹框能滚动但是 是popup 里面所有的元素都一起滚动 导致标题都滚走了 2 scroll-y 改成: :scrol…

单片机05__串口USART通信__按键控制向上位机传输字符串

串口USART通信 通用UART介绍 1.通信的概念 计算机与外界进行信息交换的过程称之为通信。 在通信的过程中,通信双方都需要遵守的规则称之为通信协议。 硬件协议:将数据以什么样的方式传输过去 软件协议:将数据以什么样的顺序传输过去 2.常用…

Android 通知--判断通知是否有跳转

一. 从应用层来分析 在 Android 中,可以通过 PendingIntent 来实现有跳转的通知和没有跳转的通知的区别。具体来说,有跳转的通知会设置一个 PendingIntent,当用户点击通知时会触发该 PendingIntent,打开指定的界面或执行特…

C++ 高级面试题:解释 C++ 中的抽象基类和纯虚函数

解释 C 中的抽象基类和纯虚函数 在C中,抽象基类和纯虚函数是面向对象编程中的重要概念,用于实现多态性和接口规范。它们通常与继承和多态结合使用,以实现接口的统一定义和派生类的不同实现。 抽象基类(Abstract Base Class&…

SpringBoot-集成Elasticsearch

依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId…

微服务之qiankun主项目+子项目搭建

主项目使用history&#xff0c;子项目使用hash模式 1. 下载安装"qiankun": "^2.10.13"2. 手动调用qiankun,使用vue脚手架搭建的项目1. 主项目配置&#xff08;我使用的是手动调用乾坤&#xff0c;在指定页面显示内容&#xff09;1. 要使用的页面中引入乾坤…

MyBatis概述

三层架构 表现层&#xff1a;直接和前端交互&#xff0c;接受AJAX请求&#xff0c;返回json数据业务层&#xff1a;一是处理前端的请求&#xff0c;二是返回持久层获取的数据持久层(数据访问层)&#xff1a;直接操作数据库&#xff0c;完成CRUD&#xff0c;返回数据给业务层 …

李沐动手学习深度学习——3.2练习

以下是个人理解&#xff0c;希望进行讨论求解。 练习 1. 如果我们将权重初始化为零&#xff0c;会发生什么。算法仍然有效吗&#xff1f; 根据SGD算法公式如上&#xff0c;第一次迭代的值可知w只与b相关&#xff0c;而对于b的迭代更新&#xff0c;只是与b的初始值相关&#x…

docker中hyperf项目配置虚拟域名

在使用hyperf框架时&#xff0c;直接用了docker环境进行开发 下载镜像运行容器 docker run --name hyperf -v /data/project:/data/project -p 9501:9501 -itd -w /data/project --privileged -u root --entrypoint /bin/sh 镜像ID配置docker-compose.yml version: "3.…

也谈AIGC和ChatGPT的区别?

AIGC 和 ChatGPT 的区别 定义 AIGC (人工智能生成内容)&#xff1a;一种人工智能技术&#xff0c;用于生成类似人类的文本、图像、音频和视频等内容。ChatGPT&#xff1a;OpenAI 开发的大型语言模型&#xff0c;是 AIGC 的一种具体实现。 目的 AIGC&#xff1a;广泛用于内容…