python应用-os库操作目录

python自带的os模块提供了许多与操作系统交互的函数,适配多种操作系统,比如windows,mac,linux等,比如常用路径操作、进程管理、环境参数等都可通过os模块实现。

以下是自带的os.py中的前面一部分代码。

  • 第一个红框中主要说明如下:

—— os.name为'posix'或'nt'

—— os.curdir是一个表示当前目录的字符串(总是'.')

—— os.pardir是一个表示父目录的字符串(总是'..')

—— os.sep是路径分隔符('/'或'\\')

—— os.extsep是扩展分隔符(总是'.')

—— os.altsep是备用路径名分隔符(None或'/')

—— os.pathsep是$PATH等中使用的组件分隔符

—— os.linesep是文本文件中的行分隔符('\r'或'\n'或'\r\n')

—— os.defpath为可执行文件的默认搜索路径

—— os.devnull为空设备的文件路径('/dev/null'等)

其中os.name意味着操作系统类型,'posix'指的是类Unix操作系统,如Linux和Mac OS,而'nt'则指的是Windows。

  • 第二个红框是当通过from os import *导入时只导入__all__中包括的功能。

目录操作

os.getcwd()获取当前程序文件所在目录

print(os.getcwd())

os.mkdir()创建目录

用于新建文件夹,当文件夹存在时会报错,而且不能创建多层目录

在mac桌面上创建目录1,执行成功

os.mkdir('/Users/htsc/Desktop/dir1')

但如果想创建多层目录,比如在dir1下接着创建dir2,然后在dir2下创建dir3,此时会报错。

os.mkdir('/Users/htsc/Desktop/dir1/dir2/dir3')

os.makedirs()创建多层目录

用于新建文件夹,当文件夹存在时会报错,能创建多层目录

os.makedirs('/Users/htsc/Desktop/dir1/dir2/dir3')

os.rmdir()删除空目录

以下执行会删除最后一层dir3目录,但是dir3目录如果不为空,则会报错。

os.rmdir('/Users/htsc/Desktop/dir1/dir2/dir3')

os.removedirs()递归删除多层空目录

以下执行会依次删除dir3/dir2/dir1目录,但是某个目录如果不为空,则会报错。

os.removedirs('/Users/htsc/Desktop/dir1/dir2/dir3')

如果想删除非空目录,可以使用shutil.rmtree()函数

import shutil
shutil.rmtree("/Users/htsc/Desktop/dir1/dir2/dir3'")

os.chdir()改变当前目录。

print(os.getcwd())
os.chdir("/Users/htsc")
print(os.getcwd())
结果:当前目录被修改
/Users/htsc/Desktop
/Users/htsc

os.rename(src, dst):重命名一个目录或文件。

os.rename('/Users/htsc/Desktop/dir1/dir2','/Users/htsc/Desktop/dir1/dir4')

os.listdir(path):列出指定目录下的所有文件和子目录。listdir()返回的是list列表

print(os.listdir(path='/Users/htsc/Desktop'))

os.scandir(path):列出指定目录下的所有文件和子目录。scandir()返回的是迭代器,而不是list列表

for entry in os.scandir('/Users/htsc/Desktop/dir1'):
    print(entry.name)        # 打印文件名
    print(entry.path)       # 打印文件的完整路径
    print(entry.is_dir())   # 判断是否是目录
    print(entry.is_file())  # 判断是否是文件

os.stat(path):获取文件或目录的状态。

print(os.stat('/Users/htsc/Desktop'))
打印结果:
os.stat_result(st_mode=16832, st_ino=245263, st_dev=16777234, 
               st_nlink=15, st_uid=501, st_gid=20, st_size=480,
               st_atime=1713104547, 
               st_mtime=1713104547, st_ctime=1713104547)

os.walk(path):递归地查找文件夹树,yield每个文件夹路径,所有的子文件夹名和所有的文件名。(返回一个生成器)

for path,sub_folder_names,file_names in os.walk('/Users/htsc/Desktop/dir1'):
  print(path)
  print(sub_folder_names)
  print(file_names)

文件夹如果比较复杂打印看上去会很乱,大家可以依次打印或者找一个小层级的目录试下。

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值