「Python系列」Python OS文件/目录方法、Python错误和异常

简介: Python的`os`模块提供了与操作系统交互的方法,包括文件和目录的操作。

一、Python OS 文件/目录方法

Python的os模块提供了与操作系统交互的方法,包括文件和目录的操作。以下是一些常用的os模块中的文件/目录方法:

目录操作

  • os.getcwd(): 返回当前工作目录的路径。
import os
current_directory = os.getcwd()
print(current_directory)
  • os.chdir(path): 改变当前工作目录到指定的路径。
import os
os.chdir("/path/to/new/directory")
  • os.mkdir(path, mode=0o777): 创建一个新目录。mode参数指定了目录的权限。
import os
os.mkdir("new_directory")
  • os.makedirs(path, mode=0o777, exist_ok=False): 递归地创建目录。如果目录已存在,exist_ok=True则不会引发异常。
import os
os.makedirs("path/to/new/directory", exist_ok=True)
  • os.rmdir(path): 删除一个空目录。
import os
os.rmdir("empty_directory")
  • os.removedirs(path): 递归地删除目录及其内容。
import os
os.removedirs("path/to/directory_and_contents")
  • os.listdir(path): 列出指定目录下的文件和子目录名。
import os
files_and_directories = os.listdir("/path/to/directory")
for item in files_and_directories:
    print(item)

文件操作

  • os.path.exists(path): 检查指定路径的文件或目录是否存在。
import os
if os.path.exists("/path/to/file_or_directory"):
    print("File or directory exists.")
  • os.path.isfile(path): 检查指定路径是否是一个文件。
import os
if os.path.isfile("/path/to/file"):
    print("This is a file.")
  • os.path.isdir(path): 检查指定路径是否是一个目录。
import os
if os.path.isdir("/path/to/directory"):
    print("This is a directory.")
  • os.path.getsize(path): 返回指定文件的大小(以字节为单位)。
import os
file_size = os.path.getsize("/path/to/file")
print(f"File size: {file_size} bytes")
  • os.remove(path): 删除一个文件。
import os
os.remove("/path/to/file")
  • os.rename(old_path, new_path): 重命名文件或目录。
import os
os.rename("/path/to/old_name", "/path/to/new_name")
  • os.stat(path): 获取文件或目录的状态信息,返回一个os.stat_result对象。
import os
stat_info = os.stat("/path/to/file_or_directory")
print(stat_info.st_size)  # 获取文件大小

这些方法只是os模块中文件/目录操作的一小部分。os模块还提供了许多其他功能,如文件权限管理、环境变量操作、进程管理等。在使用这些功能时,请确保你的代码跨平台兼容,因为不同的操作系统可能在文件路径表示、文件权限等方面存在差异。

二、Python错误和异常

在Python中,错误和异常是程序运行时可能遇到的问题,这些问题会中断正常的程序流程。Python使用异常处理机制来管理这些错误和异常情况。当错误发生时,Python会抛出一个异常,你可以使用tryexceptfinallyelse语句来捕获和处理这些异常。

常见的Python错误和异常

  1. SyntaxError: 语法错误,代码中有语法上的问题,比如缺少括号、引号不匹配等。

  2. IndentationError: 缩进错误,Python使用缩进来表示代码块,缩进错误会导致语法错误。

  3. NameError: 名称错误,当尝试访问一个未定义的变量时触发。

  4. TypeError: 类型错误,当对某个对象执行不适当的操作时触发,比如尝试将字符串和数字相加。

  5. ValueError: 值错误,当函数的参数值不正确时触发,比如尝试将非数字字符串转换为整数。

  6. KeyError: 键错误,当在字典中查找不存在的键时触发。

  7. IndexError: 索引错误,当尝试访问序列(如列表、元组或字符串)中不存在的索引时触发。

  8. AttributeError: 属性错误,当尝试访问对象的一个不存在的属性时触发。

  9. IOErrorOSError: 输入/输出错误或操作系统错误,涉及文件操作或底层系统调用时的错误。

异常处理

Python使用tryexceptelsefinally语句来处理异常。

  • try: 包含可能会引发异常的代码块。

  • except: 当try块中的代码引发异常时执行。可以指定要捕获的异常类型。

  • else: 如果try块中的代码没有引发异常,则执行else块中的代码。

  • finally: 无论是否引发异常,finally块中的代码都会执行。通常用于资源清理。

示例

try:
    # 尝试执行可能会引发异常的代码
    result = 10 / 0  # 这将引发一个ZeroDivisionError
except ZeroDivisionError:
    # 捕获ZeroDivisionError异常,并处理它
    print("Cannot divide by zero!")
except TypeError as e:
    # 捕获其他类型的异常,并打印异常信息
    print(f"A TypeError occurred: {e}")
else:
    # 如果没有异常发生,执行这里的代码
    print("The division was successful.")
finally:
    # 无论是否发生异常,都会执行这里的代码
    print("Cleaning up resources...")

在上面的示例中,尝试除以零会引发ZeroDivisionError异常,该异常会被第一个except块捕获并处理。如果尝试执行其他操作(比如将字符串和数字相加)导致TypeError,那么第二个except块会捕获该异常。如果try块中的代码成功执行而没有引发任何异常,则会执行else块中的代码。无论是否发生异常,finally块中的代码都会被执行。

自定义异常

除了内置的异常类型,你还可以创建自定义异常类,通过继承内置的Exception类或其子类来实现。

class CustomError(Exception):
    pass

try:
    raise CustomError("This is a custom error.")
except CustomError as e:
    print(e)

在这个例子中,我们创建了一个名为CustomError的自定义异常类,并在try块中引发了这个异常。然后在except块中捕获并处理了这个自定义异常。

三、相关链接

  1. Python下载安装中心
  2. Python官网
  3. Python软件下载
  4. 「Python系列」Python简介及案例
  5. 「Python系列」Python基础语法/数据类型
  6. 「Python系列」Python解释器
  7. 「Python系列」Python运算符
  8. 「Python系列」Python数据结构
  9. 「Python系列」Python元组
  10. 「Python系列」Python集合
  11. 「Python系列」Python列表
相关文章
|
7月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
1737 2
|
6月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1167 68
|
7月前
|
安全 Python
告别 os.path 的繁琐:拥抱 Python 的 pathlib
告别 os.path 的繁琐:拥抱 Python 的 pathlib
527 6
|
9月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
9月前
|
编译器 Python
如何利用Python批量重命名文件
本文介绍了如何使用Python和PyCharm对文件进行批量重命名,包括文件名前后互换、按特定字符调整顺序等实用技巧,并提供了完整代码示例。同时推荐了第三方工具Bulk Rename Utility,便于无需编程实现高效重命名。适用于需要处理大量文件命名的场景,提升工作效率。
|
8月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
278 0
|
10月前
|
编解码 Prometheus Java
当Python同时操作1000个文件时,为什么你的CPU只用了10%?
本文介绍如何构建一个高效的文件处理系统,解决单线程效率低、多线程易崩溃的矛盾。通过异步队列与多线程池结合,实现任务调度优化,提升I/O密集型操作的性能。
234 4
|
11月前
|
人工智能 C# Python
处理python异常
本文介绍了Python中的异常处理机制,并实现了一个简单的异常装饰器。通过`try/except`语句捕获异常,结合`finally`子句完成清理工作。为进一步优化代码结构,文章提出了使用装饰器处理异常的方法,避免函数中大量冗长的异常处理语句。通过类封装异常装饰器,多个函数可共享异常处理逻辑,提升代码简洁性和可维护性。总结强调了装饰器在异常处理中的优势,使代码更加优雅高效。
249 27
|
10月前
|
人工智能 索引 Python
[oeasy]python094_使用python控制音符列表_midi_文件制作
本文介绍了如何使用Python控制音符列表制作MIDI文件。首先回顾了列表下标索引(正数和负数)的用法,接着通过`mido`库实现MIDI文件生成。以《两只老虎》为例,详细解析了代码逻辑:定义音高映射、构建旋律列表、创建MIDI文件框架,并将音符插入音轨。还探讨了音符时值与八度扩展的实现方法。最终生成的MIDI文件可通过不同平台播放或编辑。总结中提到,此技术可用于随机生成符合调性的旋律,同时引发对列表其他实际应用的思考。
370 5
|
11月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
481 17
下一篇
开通oss服务