Python对于OS库的应用

img

img


刚学Python的OS库做了这两个习题,但是总是做不出来运行出错,想知道一下正确代码应该咋写呢?


# -*- coding: utf-8 -*-
import os
from time import sleep

if __name__ == '__main__':
    current_path = os.path.basename(__file__)
    current_dir = os.path.dirname(__file__)
    print("当前文件夹路径: {}".format(current_dir))
    print("当前文件路径: {}".format(current_path))
    
    # 创建文件夹
    for i in range(1, 9):
        temp_file_name = "test0{}".format(i)
        temp_path = os.path.join(current_dir, temp_file_name)
        if not os.path.exists(temp_path):
            os.makedirs(temp_path)
            print("Folder '{}' created".format(temp_path))

    sleep(5)
    
    # 删除文件夹
    for i in range(1, 9):
        temp_file_name = "test0{}".format(i)
        temp_path = os.path.join(current_dir, temp_file_name)
        if os.path.exists(temp_path):
            os.removedirs(temp_path)
            print("Folder '{}' removed".format(temp_path))
    
    # 遍历文件夹
    for path in os.listdir():
        if os.path.isdir(path):
            print("Folder: {}".format(path))
        elif os.path.isfile(path):
            print("File: {}".format(path))

print("completed")

import os
import shutil

# 创建8个目录
for i in range(1, 9):
    dirname = f"test{i:02d}"
    os.mkdir(dirname)
    print(f"成功创建目录 {dirname}")

input("目录已创建完成,按任意键继续删除...")

# 删除8个目录
for i in range(1, 9):
    dirname = f"test{i:02d}"
    shutil.rmtree(dirname)
    print(f"成功删除目录 {dirname}")

# 遍历当前目录及其所有子目录中的所有文件
for root, dirs, files in os.walk("."):
    for filename in files:
        print(os.path.join(root, filename))

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7797699
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Python脚本中常用的OS模块函数汇总(持续更新)
  • 你还可以看下python参考手册中的 python- 走向编程的第一步
  • 除此之外, 这篇博客: Python: 使用os库实现查找指定目录下,包含指定字符的文件中的 Python:os库实现查找指定目录下,包含指定字符的文件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 思路:

    1. 当前目录的文件。
      • 创建一个list存储目录下的文件,使用os.path.isfile()进行筛选;
      • 使用os.path.splitext()分割文件扩展名;
      • 再使用关键字in,筛选出包含关键字的文件名。
    2. 当前目录子目录的文件。
      • 使用os.listdir() 和 os.path.isdir()筛选出目录。
      • 递归调用本函数
    import os
    def find(dir,name):
        #print(dir)
        for i in [x for x in os.listdir(dir) if os.path.isfile(os.path.join(dir,x)) and name in os.path.splitext(x)[0]]:
            print(os.path.join(dir,i))
        for i in [x for x in os.listdir(dir) if os.path.isdir(os.path.join(dir,x))]:   #os.path.isfile() 需要完整路径或者相对当前目录的相对路径
            if os.listdir(os.path.join(dir,i))!=[]:
                try:
                    find(os.path.join(dir,i),name)
                except:
                    pass
    
    dir = '/root/Desktop'
    name = 'test'
    find(dir,name)
    

    参考文章:
    https://www.cnblogs.com/slarker/p/9810194.html

  • 您还可以看一下 Sniper.ZH老师的Python专题精讲 文件目录与系统参数操作课程中的 使用os标准库获取环境信息小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对如何正确应用Python的OS库的问题,以下是一些优化后可用的示例代码和说明:

    1. 创建目录
    import os
    
    # 创建目录
    if not os.path.exists("./testdir"):
        os.mkdir("./testdir")
    else:
        print("该目录已经存在!")
    

    在创建目录之前首先判读该目录是否存在,如果存在则提示该目录已经存在,否则调用os.mkdir创建目录。这样可以防止重复创建目录。

    1. 删除目录或文件
    import os
    
    # 删除目录或文件
    if os.path.exists("./testdir"):
        if os.path.isdir("./testdir"):
            os.rmdir("./testdir")
        elif os.path.isfile("./testdir"):
            os.remove("./testdir")
        else:
            print("无法删除该对象!")
    else:
        print("该目录或文件不存在!")
    

    在删除目录或文件之前首先判断该目录或文件是否存在,如果存在,则先判断是目录还是文件,然后调用相应的方法os.rmdoros.remove来删除目录或文件,否则输出该目录或文件不存在。

    1. 获取文件大小及文件名称
    import os
    
    # 获取文件大小及文件名称
    path = "./test.txt"
    if os.path.exists(path):
        if os.path.isfile(path):
            size = os.path.getsize(path)
            filename = os.path.basename(path)
            print("文件大小为:", size)
            print("文件名称为:", filename)
        else:
            print("该路径不是文件!")
    else:
        print("该路径不存在!")
    

    在获取文件大小和文件名称之前也要判断该路径是否存在,如果存在则判断是不是文件类型,然后调用os.path.getsize来获取文件大小,再调用os.path.basename来获取文件名称。最后输出获取到的结果。

    1. 列出目录下的所有文件和文件夹
    import os
    
    # 列出目录下的所有文件和文件夹
    dir_path = "./"
    if os.path.exists(dir_path):
        if os.path.isdir(dir_path):
            files = os.listdir(dir_path)
            print("当前目录下的文件和文件夹有:")
            for file in files:
                print(file)
        else:
            print("该路径不是目录!")
    else:
        print("该路径不存在!")
    

    在列出目录下的所有文件和文件夹之前同样要判断该路径是否存在,如果存在则判断是不是目录类型,然后调用os.listdir来列出该目录下的所有文件和文件夹,最后通过for循环依次输出。

    综上所述,正确应用Python的OS库需要仔细阅读相关文档和资料,并结合实际情况进行练习。在使用该库的过程中,需要注意一些细节问题,比如路径的前缀符号、目录的创建和删除、文件的操作等等。通过不断的实践和总结,才能更好地掌握Python的OS库的使用方法。