我是靠谱客的博主 可耐马里奥,最近开发中收集的这篇文章主要介绍Python-OS文件目录方法文件操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python-OS文件目录方法

  • 文件操作
    • 读写操作系列
      • os.open打开文件
      • os.close关闭文件
      • os.read读取
      • os.write(fd, str)
    • 路径系列
      • os.getcwd()
      • os.listdir()
      • os.pardir
      • Python os.chdir()
      • os.path模块
        • os.path.abspath(path)
        • os.path.basename(path)
        • os.path.dirname(path)
        • os.path.exists(path)
        • os.path.getsize(path)
        • os.path.isabs(path)
        • os.path.isfile(path)
        • os.path.isdir(path)
        • os.path.join(path1[, path2[, ...]])
        • os.path.split(path)
        • os.path.splitext(file)
    • 文件或文件夹重命名
      • os.rename文件或文件夹重命名
      • os.renames(old, new)
    • 创建目录
      • os.mkdir(文件夹/文件名字)
      • os.makedirs(path[, mode])
    • 删除系列
      • os.rmdir(文件夹路径)
      • os.removedirs(文件夹路径)
      • os.remove(文件路径)
    • 应用举例

  • os 模块提供了非常丰富的方法用来处理文件和目录。

文件操作

读写操作系列

os.open打开文件

  • os.open(file, flags[, mode]); flag用于选择是以什么模式打开,读写等。
  • 如os.O_RDWR 以读写的方式打开, os.O_CREAT: 创建并打开一个新文件。
import os
file = r"..samples1.txt"
fp_wr = os.open(file, os.O_RDWR | os.O_CREAT)
os.write(fp_wr, "I am well".encode("utf-8"))
os.close(fp_wr)
fp_rd = os.open(file, os.O_RDONLY)
msg = os.read(fp_rd, 100)
print(msg)
os.close(fp_rd)

result:
b'I am well'

os.close关闭文件

  • os.close( fd )

os.read读取

  • os.read(fd, n),从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。

os.write(fd, str)

  • os.write(fd, str),写入字符串到文件描述符 fd中. 返回实际写入的字符串长度。

路径系列

os.getcwd()

  • os.getcwd()方法用于返回当前工作目录,是个绝对路径字符串。

os.listdir()

  • os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
  • 它不包括 . 和 … 即使它在文件夹中,只列出一层。
# path: 需要列出的目录路径
os.listdir(path)

os.pardir

  • 获取当前目录的父目录(上一级目录),以字符串形式显示目录名。
import os
print(os.getcwd())
result = os.pardir
print(os.path.abspath(result))

result:
F:studypythonqt_studyqt_projecttest
F:studypythonqt_studyqt_project

Python os.chdir()

  • 改变当前工作目录到指定的路径,路径不存在时报错。
import os
dir_path = r"F:studypythonqt_studyqt_projectsample"
curr_path = os.getcwd()
print(curr_path)
os.chdir(dir_path)
ch_dir = os.getcwd()
print(ch_dir)

result:
F:studypythonqt_studyqt_projecttest
F:studypythonqt_studyqt_projectsample

os.path模块

os.path.abspath(path)

  • 返回绝对路径,如查找一个相对路径的绝对路径时可以使用。

os.path.basename(path)

  • 返回文件名,是返回最后一个反斜杠后面的内容,如果开始目录则返回最后一级目录名。
import os
dir_path = r"..June"
file_name = r"..Junetest.txt"
print(os.path.abspath(dir_path))
print(os.path.basename(dir_path))
print(os.path.basename(file_name))

result:
F:studypythonqt_studyqt_projectJune
June
test.txt

os.path.dirname(path)

  • 返回文件路径,返回的是目录名,不会返回最后一级文件名。
  • 原来是啥路径就返回啥路径,原来没有,返回绝对路径,以字符串返回。
import os
dir_path = r"..June"
file_name = r"..Junetest.txt"
print(os.path.dirname(dir_path))
print(os.path.dirname(file_name))
dir_path2 = "F:studypythonqt_studyqt_project"
print(os.path.dirname(dir_path2))

result:
..
..June
F:studypythonqt_study

os.path.exists(path)

  • 如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。
import os
dir_path = r"..June"
file_name = r"..Junetest.txt"
print(os.path.exists(dir_path))
print(os.path.exists(file_name))

result:
True
True

os.path.getsize(path)

  • 返回文件大小,如果文件不存在就返回错误,是文件夹名,则返回为0。
import os
dir_path = r"..June"
file_name = r"..Junetest.txt"
print(os.path.getsize(dir_path))
print(os.path.getsize(file_name))

result:
0
4

os.path.isabs(path)

  • 判断是否为绝对路径。

os.path.isfile(path)

  • 判断是否为文件。

os.path.isdir(path)

  • 判断是否为目录。
import os
dir_path = r"F:studypythonqt_studyqt_projectJune"
file_name = r"..Junetest.txt"

print(os.path.isabs(dir_path))
print(os.path.isabs(file_name))

print(os.path.isfile(dir_path))
print(os.path.isfile(file_name))

print(os.path.isdir(dir_path))
print(os.path.isdir(file_name))

result:
True
False
False
True
True
False

os.path.join(path1[, path2[, …]])

  • 把目录和文件名合成一个路径,只是把path拼起来,里面不是文件也会拼起来。
import os
dir_path = r"F:studypythonqt_studyqt_projectJune"
file_name = r"test.txt"
dir_path2 = r"F:studypythonqt_studyqt_project"
file_name2 = "June"
print(os.path.join(dir_path, file_name))
print(os.path.join(dir_path2, file_name2))

result:
F:studypythonqt_studyqt_projectJunetest.txt
F:studypythonqt_studyqt_projectJune

os.path.split(path)

  • 把路径分割成 dirname 和 basename,返回一个元组,其实就是把最后一级分开,放于元组中。
import os
dir_path = r"F:studypythonqt_studyqt_projectJune"
file_name = r"..Junetest.txt"
print(os.path.split(dir_path))
print(os.path.split(file_name))

result:
('F:\study\python\qt_study\qt_project', 'June')
('..\June', 'test.txt')

os.path.splitext(file)

  • 分割路径,返回路径名和文件扩展名的元组。
  • 可以用来取文件的后缀。
import os
dir_path = r"F:studypythonqt_studyqt_projectJune"
file_name = r"..Junetest.txt"
print(os.path.splitext(dir_path))
print(os.path.splitext(file_name))

('F:\study\python\qt_study\qt_project\June', '')
('..\June\test', '.txt')

文件或文件夹重命名

os.rename文件或文件夹重命名

  • 用于重命名文件或目录。
  • 该方法没有返回值。
os.rename(os.rename(src, dst))

os.renames(old, new)

  • 递归地对目录进行更名,也可以对文件进行更名
import os
# 返回当前工作目录
cwd = os.getcwd()
# 列出目录文件夹
path_file = os.listdir(cwd)
print("当前目录下的文件及文件夹: %s" % path_file)
# 重命名
os.rename("test2", "test_rename")
os.rename("test2.txt", "test_rename.txt")
# 列出修改文件夹名和文件名后的目录文件夹
print("目录为: %s" % os.listdir(os.getcwd()))

创建目录

os.mkdir(文件夹/文件名字)

  • os.mkdir() 方法用于创建目录。
  • path -要创建的目录,可以是相对或者绝对路径。
  • 如果目录已经存在,则报错。
  • 不能连续创立文件夹,子文件夹,只能一级一级来。
  • . 就表示当前所在目录,… 表示当前所在目录的父目录。
# 在当前路径下创建名字为June的文件夹
import os
# 返回当前工作目录
cwd = os.getcwd()
os.mkdir(cwd+r"June")

# 在June的文件夹下创建txt文件
import os
cwd = os.getcwd()
os.mkdir(cwd + r"June")
path = cwd + r"June"
os.mkdir(path + r"JuneJuly.txt")

# 在June的文件夹下创建txt文件,使用相对路径
import os
cwd = os.getcwd()
os.mkdir(cwd + r"June")
os.mkdir(r".Junerelative.txt")

os.makedirs(path[, mode])

  • 递归文件夹创建函数。像mkdir(), 但是会把所有不存在的目录都创建。
  • 目录存在时报错。
import os
dir_path = r"..June"
print(os.listdir(dir_path))
os.makedirs(dir_path+"\" + "Lucy\Jim\" + "l1.txt")
print(os.listdir(dir_path))
dir_path2 = dir_path+"\" + "Lucy"
print(os.listdir(dir_path2))

result:
[]
['Lucy']
['Jim']

删除系列

os.rmdir(文件夹路径)

  • 删除指定的目录,即文件夹(不能删除文件),但是只能删除空的文件夹。
  • 当删除的文件夹不为空时,报OSError错误。
import os
dir = os.listdir("..June")
print(dir)
os.rmdir("..JuneLucy")
dir = os.listdir("..June")
print(dir)

result:
['Lucy']
[]

os.removedirs(文件夹路径)

  • 用于递归删除目录, 如果子文件夹成功删除, removedirs()才尝试删除上一层的文件夹,直到文件不为空。
  • 当删除的最下层文件夹不为空时,报OSError错误。
    os.remove()

os.remove(文件路径)

  • os.remove() 方法用于删除指定路径的文件。
  • 如果指定的路径是一个目录,将抛出PermissionError。
import os
dir = os.listdir(r"..June")
print(dir)
os.remove(r"..Junetest.txt")
dir = os.listdir(r"..June")
print(dir)

result:
['Lucy', 'test.txt']
['Lucy']

应用举例

  • 删除一个文件夹
    文件夹下面会有子目录,每一层可能有文件和文件夹。
    我们已知的这些方法中只能删除空文件夹或者文件。
    决定先把文件一个个删掉,等成了空文件夹以后再删文件夹。
import os
dir_path = "..June"

def remove_dir(path_name):
    dir_list = os.listdir(path_name)
    for i_dir in dir_list:
        name = os.path.join(path_name, i_dir)
        if not os.path.isdir(name):         #文件夹为空时删除
            os.remove(name)
        else:
            remove_dir(name)                #递归调用
            os.rmdir(name)


remove_dir(dir_path)
os.rmdir(dir_path)
  • 复制文件夹
    文件夹下的所有内容都复制到另一个文件夹。
    文件复制的本质是读取一个地方的东西,然后写入另一个地方。
# 将Junep1文件夹的内容全赋值到p2文件夹中
import os

src_path = r"..Junep1"
dst_path = r"..Junep2"


def copy_path(src_path, dst_path):
    all_dir = os.listdir(src_path)
    if os.path.isdir(src_path) and os.path.isdir(dst_path):
        for i_dir_file in all_dir:
            src_path_tmp = os.path.join(src_path, i_dir_file)
            dst_path_tmp = os.path.join(dst_path, i_dir_file)

            if os.path.isdir(src_path_tmp):
                os.makedirs(dst_path_tmp)
                copy_path(src_path_tmp, dst_path_tmp)
            else:
                with open(src_path_tmp, "rb") as fp_read:
                    msg = fp_read.read()
                    with open(dst_path_tmp, "wb") as fp_write:
                        fp_write.write(msg)
    else:
        print("不是文件夹")

最后

以上就是可耐马里奥为你收集整理的Python-OS文件目录方法文件操作的全部内容,希望文章能够帮你解决Python-OS文件目录方法文件操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部