当前位置:   article > 正文

通过示例学习在 Python 中使用 os 模块_python join cwd

python join cwd

Python os 模块是操作系统的瑞士军刀,让你可以通过Python访问文件、目录和其他操作系统功能。该模块充当你的Python代码和操作系统处理其文件系统的专有桥梁。

它也是一个可移植模块,这意味着无论你是在 Windows、Mac OSX 还是 Linux 上运行 Python 代码,只要操作系统支持该功能,你都可以使用相同的方法并获得相同的结果。如果操作系统不支持某个方法,则会引发 OSerror

这个模块有很多功能。你可以使用它来获取当前目录的路径、获取该目录中文件和文件夹的名称、更改目录、删除目录等等。了解如何使用此模块的最佳方法是通过真实 Python 代码示例.

因此,请打开你的 Python IDE 并自己尝试其中的一些示例。

带有示例的 Python os 模块方法

获取使用 os.name 导入的操作系统模块的名称

虽然你可能认为此属性会告诉你运行 Python 代码的操作系统的名称,但事实并非如此。相反,它返回一个字符串,该字符串是 os 模块使用的 Python 模块的名称。例如:

  1. # 导入 os 模块
  2. import os
  3. # 打印名称
  4. print(os.name) # 将在 Mac 和 Linux 上打印“posix”,在 Windows 上打印“nt”

Udemy付费课程下载 100 Days of Code: The Complete Python Pro Bootcamp for 2022 - 口袋资源网独家Udemy付费课程下载,高清视频+中英文字幕+配套资料。用不到1/10的价格,享受99%的服务。2022 年完整的 Python Pro 训练营通过在 100 天内构建 100 个项目来掌握 Python。学习数据科学、自动化、构建网站、游戏和应用程序!https://www.koudaizy.com/tutorials/100-days-of-code/

使用 os.environ 获取所有环境变量

这个 os 模块方法列出了你的 Python 代码正在执行的环境的所有当前环境变量。例如:

  1. # 导入 os 模块
  2. import os
  3. # 打印环境变量
  4. print(os.environ)

此脚本的结果可能非常冗长,具体取决于你环境中变量的数量。这是示例的一部分:

environ({'TERM_PROGRAM': 'vscode', 'ANDROID_HOME': '/Users/myUser/Library/Android/sdk', 'TERM': 'xterm-256color', 'SHELL': '/bin/sh', ...

使用 os.getenv() 获取特定环境

如果你只需要从 Python 脚本中访问一个或两个环境变量,则直接使用上面的方法可能有点过头了。使用 os.getenv(),你可以获取特定的环境变量,并在未找到该变量时为该值设置默认值。

  1. # 导入os模块
  2. import os
  3. # 获取环境变量
  4. shell = os.getenv('SHELL', '/bin/fish')
  5. # 打印环境变量
  6. print(shell) # 如果没有设置SHELL,会打印/bin/fish

使用 os.getcwd() 获取当前工作目录

当前工作目录或 CWD 是 Python 当前正在执行的文件夹。当你按名称执行 Python 文件时,没有目录路径,Python 解释器假定你要查找的文件位于当前工作目录中。这是一个使用它的简单示例:

  1. # 导入os模块
  2. import os
  3. # 获取当前工作目录
  4. cwd = os.getcwd()
  5. # 打印当前工作目录
  6. print("Current working directory: {}".format(cwd))

getcwd() 函数返回一个字符串,其中包含你正在执行 Python 代码的目录的路径,因此上面的代码将打印类似“当前工作目录:/Users/myUser/Projects/python-code/”的内容。

使用 os.chdir() 更改当前工作目录

如果你编写了一个处理文件的 Python 脚本,并且这些文件位于完全不同的目录中,你可能会发现此方法很有用。它使你可以将当前工作目录切换到另一个文件夹。这是一个例子:

  1. # 导入os模块
  2. import os
  3. # 打印当前工作目录
  4. print(os.getcwd())
  5. # 改变当前工作目录
  6. os.chdir('../')
  7. # 打印当前工作目录
  8. print(os.getcwd ())

正如你在上面的代码中看到的,你不必指定文件的整个路径。你也可以使用相对路径。此代码会将当前工作目录上移一个文件夹,结果如下所示:

  1. /Users/myUser/Projects/python-code/
  2. /Users/myUser/Projects/

更多 Python 课程

Udemy付费课程下载 Python圣经 - The Python Bible 用 Python 编程所需的一切 - 口袋资源网独家Udemy付费课程下载,高清视频+中英文字幕+配套资料。用不到1/10的价格,享受99%的服务。Python Bible 是适合初学者的完美 Python 课程。即使您没有编程经验,也不要担心,因为这适用于像您这样的人。https://www.koudaizy.com/tutorials/the-python-bible/使用 os.path.join() 正确创建文件路径

join() 方法可让你根据操作系统的规则正确连接一个或多个路径。虽然你有可能通过编写自己的函数来连接路径来获得正确的路径,但 join() 在你使用的任何操作系统上都能正常工作。这是一个例子:

  1. # 导入 os 模块
  2. import os
  3. # 获取当前工作目录
  4. cwd = os.getcwd()
  5. # 当前工作目录下的子文件夹
  6. new_folder = 'new_folder'
  7. path = os.path.join(cwd, new_folder)
  8. # 打印目录
  9. print( f"已创建目录: {path}"

在 Mac OSX 或 Linux 中,这会打印类似于“/Users/myUser/new_folder”的内容。在 Windows 中,它会使用反斜杠并且看起来更像“C:\Users\myUser\new_folder”。

使用 os.mkdir() 创建一个新目录

Python 中的此方法允许你使用特定的数字模式创建新目录。如果你尝试创建一个已经存在的目录,该方法将引发 FileExistsError。这是一个例子:

  1. # 导入 os 模块
  2. import os
  3. # 获取当前工作目录
  4. cwd = os.getcwd()
  5. # 新建文件夹名称
  6. new_folder_name = 'new_folder'
  7. # 创建完整目录路径
  8. path = os.path.join(cwd, new_folder_name)
  9. # 创建directory
  10. os.mkdir(path)
  11. print("Directory {} created".format(path))

mkdir() 方法接受的第一个参数是你将要创建的目录的完整路径。上面的代码将当前工作目录连接到新文件夹名称以获取此值,并在此代码运行的目录中创建一个“new_folder”文件夹。mkdir() 方法还接受一个可选的第二个参数,即创建目录的模式。一些操作系统不接受这个值.此外,如果路径中的任何目录不存在,则会引发 FileExistsError,并且不会创建该文件。在这种情况下,你可能希望使用下一个示例中的代码。

使用 os.makedirs() 递归创建新目录

此方法与上一个方法一样工作,只是它会创建任何在你创建目录时不存在的中间目录。例如:

  1. # 导入 os 模块
  2. import os
  3. # 获取当前工作目录
  4. cwd = os.getcwd()
  5. # 新建文件夹路径。这些都不存在,但将被创建。
  6. new_path = 'new_folder1/new_folder2'
  7. # 创建全目录路径
  8. path = os.path.join(cwd, new_path)
  9. # 创建目录
  10. os.makedirs(path)
  11. print("Directory {} created".format(path))

使用 os.listdir() 列出目录和文件

os.listdir() 方法接受文件路径并返回该路径中的文件和文件夹的列表。path 参数是可选的,如果未设置,该方法将列出当前工作目录中的文件和文件夹。这是一个例子:

  1. # 导入os模块
  2. import os
  3. # 获取根目录下文件和文件夹的列表
  4. path = '/'
  5. dir_list = os.listdir(path)
  6. # 打印列表
  7. print(dir_list)

运行此脚本的结果如下所示:

['home''usr''.DS_Store''bin''sbin''.file''etc''var''Library''System''.VolumeIcon.icns''.fseventsd''private''.vol''Users''Applications''opt''dev''Volumes''tmp''cores']

Python 网络开发课程

Udemy付费课程下载 Django 4 Masterclass 2022: From Development To Deployment - 口袋资源网独家Udemy付费课程下载,高清视频+中英文字幕+配套资料。用不到1/10的价格,享受99%的服务。在本实践课程中,您将学习如何使用 Django 从头开始​​构建复杂的 Web 应用程序。本课程将教你 Django,从非常基础的级别开始,然后逐步转向高级主题,如身份验证。https://www.koudaizy.com/tutorials/django-4/

学习更多编程课程

使用 os.remove() 删除文件

os.remove() 方法删除操作系统中的文件,但不能删除目录。如果你尝试使用它删除目录,该方法将引发 OSerror。例如:

  1. # 导入os模块
  2. import os
  3. # 设置文件名
  4. file_name = 'my_file.txt'
  5. # 设置文件所在
  6. directory = '/Users/myUser/Projects/python-code/'
  7. # 创建全路径
  8. path = os .path.join(directory, file_name)
  9. # 删除文件
  10. os.remove(path)

使用 os.rmdir() 删除目录

要在 Python 中删除目录,请使用 os.rmdir()。这仅适用于空目录。如果目录包含文件或文件夹,则该方法会引发 OSerror。这是一个例子:

  1. # 导入os模块
  2. import os
  3. # 设置要删除的目录
  4. file_name = 'my_directory'
  5. # 设置父目录路径
  6. directory = '/Users/myUser/Projects/python-code/'
  7. # 创建全路径
  8. path = os.path.join(directory, file_name)
  9. # 删除目录
  10. os.rmdir(path)

使用 os.walk() 迭代目录中的文件名

此方法通过以自上而下或自下而上的方式遍历目录结构,在目录树中生成文件名。这是此方法的语法:

os.walk(top, topdown=True, onerror=None, followlinks=False)

第一个参数是步行开始的路径,并且是唯一必需的参数。默认情况下,它会进行自上而下的遍历,你可以通过将第二个参数设置为 False 来进行自下而上的遍历。你可以将第三个参数设置为将在错误发生时处理错误的函数。如果你将第四个参数设置为 true,它将遵循符号链接,默认情况下不会这样做。该方法返回一个包含目录路径、目录名和文件名列表的 3 元组。这是一个例子:

  1. # 导入 os 模块
  2. import os
  3. # 获取当前工作目录
  4. cwd = os.getcwd()
  5. # 列出
  6. os.walk(cwd) 中的 dirpath、dirnames、filenames 的详细信息:
  7. print(dirpath)
  8. print(dirnames)
  9. print(filenames)

使用 os.walk() 可以做很多事情。有关详细信息,请访问该方法的官方文档

使用 os.popen() 打开和管道文件或目录

os.popen() 方法打开与命令之间的管道。它返回一个连接到管道的打开文件对象,可以根据打开的模式读取或写入。这是此方法的语法:

os.popen(cmd, mode='r', buffering=-1)

打开文件的默认模式是只读。以下是你可以使用的其他值:

  • r:打开一个文件进行读取。
  • r+:打开一个文件进行读写。
  • w : 打开一个只用于写入的文件。如果文件存在,则覆盖文件。如果文件不存在,它会创建一个新文件进行写入。
  • w+:打开一个文件进行读写。如果文件存在,则覆盖现有文件。如果该文件不存在,则创建一个新文件进行读写。

有关更多模式以及如何使用缓冲,请阅读使用相同值的 Python 内置 open() 方法的文档。os.popen() 唯一需要的参数是第一个参数,它是你将用于管道的 shell 命令。这是一个例子:

  1. # 导入 os 模块
  2. import os
  3. # 打开管道到当前工作目录
  4. pipe = os.popen('ls -la')
  5. # 打印结果
  6. print(pipe.read())

由于使用的命令是“ls -la”,这将打印当前工作目录的目录列表。

使用 os 模块处理错误

因为 Python os 模块被设计为可移植的,但是你的操作系统可能不支持你正在使用的某些方法,你将需要使用 try 和 accept 来处理可能出现的错误。这是一个示例,我们尝试使用 os.mkdir() 创建递归文件夹,但这不起作用:

  1. # 导入 os 模块
  2. import os
  3. # 获取当前工作目录
  4. cwd = os.getcwd()
  5. # 创建嵌套文件夹
  6. new_folder_name = 'first_folder/second_folder'
  7. # 创建完整目录路径
  8. path = os.path.join(cwd, new_folder_name)
  9. # 尝试创建目录
  10. try:
  11. os.mkdir(path)
  12. print("Directory {} created".format(path))
  13. except FileNotFoundError:
  14. print('Directory already exists')

Python os 模块的其他有用方法

os 模块非常广泛,你可以使用的方法比上面示例中使用的方法更多。以下是你可以在 Python 代码中使用的其他一些方法:

  • os.path.split(path):这会将路径拆分为路径和文件名。
  • os.path.dirname(path):返回路径的目录名。
  • os.path.abspath(path):这将返回绝对路径。
  • os.path.isfile(path):当路径指向文件时返回 true,否则返回 false。
  • os.path.isdir(path):当路径指向目录时返回 true,否则返回 false。
  • os.path.exists(path):此方法确定路径是否存在。

要了解有关 Python 的更多信息,可以查看Python官网。如果你准备好培养自己的 Python 技能,口袋资源有许多 Python 课程,你可以按照自己的进度学习 Python。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/686885
推荐阅读
相关标签
  

闽ICP备14008679号