首页 > 编程语言 >python3之os库和pathlib库

python3之os库和pathlib库

时间:2023-09-08 17:24:52浏览次数:48  
标签:files pathlib dir file print path os python3

#os标准库

import os

# 当前 Python 运行所在的环境 posix,nt,java
print(os.name)  # nt

# os.getcwd()获取当前工作路径
print(os.getcwd())

dir = "./files/foo/bar/bar2"
file = os.path.join(dir, "c.txt")
# os.path.join() 可以将多个传入路径组合为一个路径
print(file)

# 获得绝对路径
path_abs = os.path.abspath(file)
print(path_abs)

# 判断传入路径是否是绝对路径
print(os.path.isabs(path_abs))

# 获得路径中包含的文件名和目录
print(os.path.basename(file))
print(os.path.dirname(file))

# 将路径分割成文件名和目录两个部分,放在一个tuple中返回
print(os.path.split(file))

# 检测目录、文件是否存在
print(os.path.exists(file))
print(os.path.exists(dir))

# 路径是否指向常规文件、目录文件
print(os.path.isfile(file))
print(os.path.isdir(dir))

# 查询文件大小、上一次读取的时间、上一次修改的时间
print(os.path.getsize(file))
print(os.path.getatime(file))
print(os.path.getmtime(file))

# 去除路径path中的冗余
print(os.path.normpath(os.path.join(dir, "../../")))

# 查询多个路径的共同部分
print(os.path.commonprefix([dir, file]))

# os.walk函数需要传入一个路径作为top参数,函数的作用是在以top为根节点的目录树中游走,
# 对树中的每个目录生成一个由(dirpath, dirnames, filenames)三项组成的三元组
for item in os.walk("."):
    print(item)


# os.listdir列出(当前)目录下的全部路径(及文件)
def get_filelists(file_dir="."):
    list_directory = os.listdir(file_dir)
    filelists = []
    for directory in list_directory:
        if os.path.isfile(directory):
            filelists.append(directory)
    return filelists


# print(get_filelists())

# os.makedirs递归创建一个路径,如果指定路径已存在,则会抛出FileExistsError异常
try:
    os.makedirs(dir)
except FileExistsError:
    print("文件夹已存在")
else:
    print("创建成功")

# os.rename()函数的作用是将文件或路径重命名,一般调用格式为os.rename(src, dst)
try:
    os.rename("files/a.txt", "files/b.txt")
    os.rename("files/b.txt", os.path.join(dir, "c.txt"))
except FileNotFoundError:
    print("源文件不存在")
except FileExistsError:
    print("目标文件已经存在")
except OSError:
    print("没有权限")
else:
    print("重命名成功")

# os.remove() 删除文件   os.removedirs 递归删除文件路径
try:
    if os.path.isfile(dir):
        os.remove(dir)
        print("%s 是一个文件" % dir)
    else:
        os.removedirs(dir)
        print("%s 是一个路径" % dir)
except OSError:
    print("目錄不是空的")
else:
    print("删除成功")

# os.chdir是切换当前工作路径为指定路径
os.chdir("./files")

#pathlib库

from pathlib import Path

# 文件当前所在目录
path_curr = Path.cwd()
print(path_curr)

# 用户主目录
print(Path.home())

# 目录拼接
print(Path.cwd() / "files")

# 创建、删除目录
(Path.cwd() / "files/foo2").mkdir()  # 单层目录
(Path.cwd() / "files/foo2").rmdir()  # 单层目录

file = Path.cwd() / "files/a.txt"
# 读写文件
with file.open("w") as f:  # 文件不存在即创建后打开。
    f.write("python")  # 写入 python 字符串。
print(file.read_text())  # python
file.write_text(data="php")
print(file.read_text())  # php
str2byte = bytes("python", encoding="utf-8")
file.write_bytes(str2byte)
print(file.read_bytes())  # b'python'
print(file.read_text())  # python

# 获取文件所在目录的不同部分
ph = Path("files/a.txt").resolve()  # 返回文件的完整路径
print(ph)  # 文件的完整路径
print(ph.name)  #:a.txt 文件完整名称(文件名+后缀名)
print(ph.stem)  # a  文件名
print(ph.suffix)  # txt 文件后缀名
print(ph.parent)  # 文件所在的文件夹名
print(ph.anchor)  # 文件所在的盘符

# 判断文件、路径是否存在
print(ph.exists())  # True
print(ph.is_dir())  # False
print(ph.is_file())  # True

# 文件统计以及匹配查找
for val in (Path.cwd() / "files").glob("*.txt"):  # 返回直接目录下所有与 pattern 匹配的文件,返回生成器类型
    print(val)
for val in (Path.cwd() / "files").rglob("*.txt"):  # 返回递归目录下所有与 pattern 匹配的文件,返回生成器类型
    print(val)
for val in (Path.cwd() / "files").iterdir():  # 返回直接目录下所有文件及目录,返回生成器类型
    print(val)


print(Path.cwd() / "files/")

 

标签:files,pathlib,dir,file,print,path,os,python3
From: https://www.cnblogs.com/caroline2016/p/17688104.html

相关文章

  • python3类实例和错误处理
    类实例classCar(object):name="Car"def__init__(self,name):self.name=name#类方法通过@classmethod装饰器实现,只能访问类变量,不能访问实例变量;通过cls参数传递当前类对象,不需要实例化。@classmethoddefrun(cls,speed):......
  • osg场景中的坐标和模型在3dmax的坐标有什么关联
    在OpenSceneGraph(OSG)中的坐标系统与3dsMax(3DStudioMax)中的坐标系统之间存在一些基本的关联,但也有一些重要的差异。以下是它们之间的主要区别和关联:坐标系方向:OSG使用右手坐标系,其中X轴指向右侧,Y轴指向上方,Z轴指向观察者的方向(远离观察者)。3dsMax通常使用左手坐标系,其......
  • centos7.9安装若依管理系统
    1安装mysql数据库2安装redis数据库3安装nginx4修改配置mysql数据库和redis数据库都在centos7.9上安装,把本地配置文件数据库相关部分修改成centos7.9的信息。修改application-druid.yml,修改mysql文件配置。修改application.yml,修改redis数据库配置。 ......
  • HarmonyOS/OpenHarmony(Stage模型)应用开发组合手势(二)并行识别
    并行识别组合手势对应的GestureMode为Parallel。并行识别组合手势中注册的手势将同时进行识别,直到所有手势识别结束。并行识别手势组合中的手势进行识别时互不影响。以在一个Column组件上绑定点击手势和双击手势组成的并行识别手势为例,由于单击手势和双击手势是并行识别,因此两个手......
  • python3 postgreSQL 依赖问题
    unabletoexecute'gcc':NosuchfileordirectoryItappearsyouaremissingsomeprerequisitetobuildthepackagefromsource.Youmayinstallabinarypackagebyinstalling'psycopg2-binary'fromPyPI.Ifyouwantto......
  • OSPF的基本概念
    OSPF的基础术语1.区域 OSPFArea用于标识一个OSPF的区域。区域是从逻辑上将设备划分为不同的组,每个组用区域号(AreaID)来标识。Router-IDRouter-ID(RouterIdentifier,路由器标识符),用于在一个OSPF域中唯一地标识一台路由器。Router-ID的设定可以通过手工配置的方式,或使用系统自......
  • Padavan配置hosts解析
    一、ssh登入直接修改hosts文件cd/etc/storage/dnsmasq/vi命令直接修改hosts文件vi/etc/storage/dnsmasq/hosts修改完成后记得重启网络服务restart_dhcpdhosts 二、在web后台进行配置,高级设置--->内部网路(LAN)--->DHCP服务器--->自定义配置文件hosts,添加后记得应用......
  • CentOS7,LVM根分区扩容步骤
    CentOS7,LVM根分区扩容步骤:转自:简书@神冰凰1.查看现有分区大小df-THLVM分区,磁盘总大小为20G,根分区总容量为17G2.关机增加大小为30G(测试环境使用的VmwareWorkstation)  扩展分区到303.查看扩容后磁盘大小df-THlsblk 磁盘总大小为30G,根......
  • openpyxl使用问题——OSError: File contains no valid workbook part
    第一种:打开xls的文件,报错,这个比较容易理解,就是openpyxl是不支持打开xls文件的,版本太老了。推荐使用xlrd库。openpyxl.utils.exceptions.InvalidFileException:openpyxldoesnotsupporttheold.xlsfileformat,pleaseusexlrdtoreadthisfile,orconvertittothemo......
  • 无涯教程-JavaScript - IMCOSH函数
    描述IMCOSH函数以x+yi或x+yj文本格式返回复数的双曲余弦值。语法IMCOSH(inumber)争论Argument描述Required/OptionalInumberAcomplexnumberforwhichyouwantthehyperboliccosine.RequiredNotesExcel中的复数只是简单地以文本形式存储在Excel中。......