Python从0到1之目录操作

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

常用方法

getcwd()

获取当前工作路径 current working directory

imort os
print(os.getcwd()) # '/Users/xyq/PycharmProjects'

listdir()

获取指定文件夹包含的文件或文件夹的名字的列表。
os.listdir(path)
path:目录路径,可以省略,待表当前路径

print(os.listdir()) # ['test_result.txt', '.DS_Store', 'file.py', 'test.txt', 'venv', '.idea']
print(os.listdir("/Users/xyq/PycharmProjects/")) # ['study', '.DS_Store', 'InterfaceFrameExcel']

chdir()

切换工作目录

os.chdir("/Users/xyq/PycharmProjects/test")
print(os.getcwd()) # '/Users/xyq/PycharmProjects/study'

mkdir()

创建一个目录

os.mkdir("test") # 创建test文件目录
os.mkdir("test") # 重复创建报错FileExistsError: [Errno 17] File exists: 'test'

makedirs()

创建多级目录,父目录不存在,递归生成

os.makedirs("dev/test")
print(os.listdir()) # dev/test目录生成

rmdir()

删除单级目录,若目录不为空会报错

os.rmdir("test")
print(os.listdir()) # test目录删除
rmdir()

removedirs()

删除多级目录,目录为空,删除,递归到上一级目录,若也为空,删除,依次类推
若目录不为空,则不删除

os.removedirs("dev/test") # dev/test目录删除

remove()

remove(filename)
删除文件,不能删除目录

os.remove("test_result.txt") # test_result.txt文件删除

rename()

os.rename(oldname,newname)
重命名文件或者文件夹

os.rename("test","txt") # 文件夹test重命名为txt
os.rename("1.doc","1.txt") # 文件1.doc重命名为1.txt

stat()

os.stat(path)
查看文件信息

print(os.stat("1.txt")) # 展示文件信息os.stat_result(st_mode=33188, st_ino=12899347922, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=0, st_atime=1593495758, st_mtime=1593495758, st_ctime=1593498729)

system()

os.system(command)
运行shell命令

print(os.system("ls")) #执行shell中ls命令

os.path

path.exists(“path”)

判断目录是否存在
path:目录路径

print(os.path.exists("venv")) # True

path.isdir(“path”)

path:目录路径
判断是否是目录

print(os.path.isdir("venv")) # True

path.isfile(“filename”)

判断是否是文件

print(os.path.isfile("venv")) # False

属性

os.curdir

返回.获取当前路径

os.pardir

返回…获取当前目录的父目录(上一级目录)

print(os.curdir()) # '.'
print(os.pardir()) # '..'
os.chdir(os.pardir) # 切换到上一级目录
print(os.getcwd()) # '/Users/xyq/PycharmProjects'
os.chdir("study") # 切换到study目录
print(os.getcwd()) # '/Users/xyq/PycharmProjects/study'
print(os.listdir(".")) # 查看当前目录列表['test_result.txt', '.DS_Store', 'file.py', 'test.txt', 'venv', '.idea']
print(os.listdir("..")) # 查看上级目录列表['study', '.DS_Store', 'InterfaceFrameExcel']

os.name

返回当前操作系统

os.sep

返回操作系统特定路径分割符

os.linesep

返回换行分隔符

os.pathsep

返回分割文件路径的字符串

os.environ

返回环境变量

print(os.name) # 'posix'
print(os.sep) # '/'
print(os.linesep) # '\n'
print(os.pathsep) # ':'
print(os.environ) # 正常返回环境变量

练习

统计当前目录下有多少文件或目录

import os

count_path = 0
count_file = 0
for i in os.listdir():
    if os.path.isdir(i):
        count_path += 1
    elif os.path.isfile(i):
        count_file += 1

print(f"当前目录有{count_path}个目录,有{count_file}个文件")
# 当前目录有2个目录,有5个文件

删除某个目录下所有txt文件

import os
# 造数据,test目录下写入txt文件和其他文件和目录
os.mkdir("test")
os.chdir("test")
for i in range(1,6):
    fp = open(str(i) + ".txt","w")
    fp.close()
    fp = open(str(i) + ".doc", "w")
    fp.close()
    os.mkdir(str(i))
# 查看造的数据
print(os.listdir())
for i in os.listdir():
    if os.path.isfile(i):
        if i[int(i.rfind('.')):] == ".txt":
            os.remove(i)
# 查看删除后结果
print(os.listdir()) # 删除全部.txt文件

在当前目录下找到1小时内所有新建的文件

import os,time

result = []
os.chdir("txt")
for i in os.listdir():
    if os.path.isfile(i):
        if time.time() - os.stat(i).st_ctime < 3600:
            result.append(i)
print(result) # ['result.txt', '1.txt']

批量修改文件名,既可以添加指定字符串,也可以删除指定字符串

import os

os.chdir("test")
# 构造数据
# for i in "abc":
#     fp = open(i+".txt","w")
#     fp.close()

set_str = "python_"
new_name = ""
flag = input("请输入flag,1:添加python_,2:删除python_")
for i in os.listdir():
    if flag == "1":
        new_name = set_str + i
    elif flag == "2":
        new_name = i[len(set_str):]
    os.rename(i,new_name)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值