Python os模块文件操作(二)

os模块对文件夹和文件的操作很多。可以先看: https://blog.csdn.net/weixin_43790276/article/details/98674218

一、os文件夹删除操作

# coding=utf-8
import ostry:os.mkdir("folder")
except:pass
fd = os.open('folder/ccc.txt', os.O_CREAT)
print(os.listdir('folder'))
os.close(fd)
try:# 删除指定的空目录,如果目录非空,则抛出一个OSError异常os.rmdir("folder")
except OSError as e:print(e)
os.remove('folder/ccc.txt')
print(os.listdir('folder'))
try:os.rmdir("folder")print("删除文件夹成功")
except OSError as e:print(e)

运行结果:

['ccc.txt']
[Errno 39] Directory not empty: 'folder'
[]
删除文件夹成功

上面的代码中,先创建了一个folder文件夹,然后在folder目录下创建了一个ccc.txt文件,使用os.listdir()方法,看到文件夹中有一个ccc.txt文件,说明我们创建文件夹和文件都成功了。

os.rmdir(name)是删除指定的文件夹,如果删除的文件夹不是一个空的文件夹,会报错,抛出OSError异常,如上面的folder中有ccc.txt文件时,删除时报错了。先将ccc.txt文件删除,再使用rmdir()来删除folder文件夹,删除成功。

二、os递归创建、重命名、删除文件夹

try:# 递归创建文件夹os.makedirs("folder_a/folder_aa/folder_aaa")
except:pass

os.makedirs(path)会根据传入的路径递归地创建文件夹。如:上面的代码执行后,会在当前目录下递归地创建folder_a/folder_aa/folder_aaa文件夹,文件夹是分三层的。

在传入path时,最后也可以是一个文件,这样会先递归创建目录,然后在最里层创建文件。

try:# 递归地对目录进行更名,也可以对文件进行更名os.renames("folder_a/folder_aa/folder_aaa", "folder_b/folder_bb/folder_bbb")
except:pass

os.renames(old, new)会根据传入的old和new参数,递归地对文件夹进行重命名,将old的文件夹名重命名成new的文件夹名。

如果old的文件夹除了最里面的文件夹外,其他都是空的,则重命名后old改成了new。old和new的层数可以不同,如old是3层的目录,new可以不等于3层,最终,old最里层的文件保留在new最里层的文件夹里。

如果在old除了最里层目录内有文件,其他层里也有文件,renames()按照new创建新的嵌套文件夹,将old最里层的文件复制过来,old里有文件的文件夹及父级文件夹保留不变。具体可以自己演示一下,就知道效果了。

try:# 递归删除目录os.removedirs("folder_b/folder_bb/folder_bbb")
except:pass

os.removedirs(path)会递归地将文件夹删除。path的最里层可以指定到文件(如果有文件的话)。

当递归删除的文件夹中有文件时,如果path没有指定到文件,只指定到文件夹,删除会失败,文件夹里面为空才能删除成功。

如果除了最里层目录有文件,其他层目录里也有文件,文件及文件的父级目录都会保留。

三、os获取当前文件夹的信息

# os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
folders = os.walk('.')
for i in folders:print(i)

运行结果:

('.', ['os_folder'], ['os_demo_two.py', 'os_demo.py'])
('./os_folder', [], ['aaa.txt'])

os.walk(path)返回指定目录下的文件信息,返回的是一个可迭代对象。os.walk()会遍历指定目录下的所有文件夹,依次返回每个文件夹中的文件信息。

上面的代码中,传入的参数是当前路径,遍历返回的可迭代对象,得到的文件信息是一个一个的元组。

每个元组的第一个元素是文件夹的相对路径,根据我们传的参数来确定。第二个元素是此文件夹下有哪些子文件夹,这些子文件夹的名字组成一个列表,如果没有子文件夹,则列表为空。第三个元素是此文件夹下有哪些文件,这些文件的文件名组成一个列表,如果没有文件,则列表为空。

os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])的参数:

top为指定的目录或路径,是一个文件夹。topdown可选,为True或者没有指定, 则返回结果是从最上层目录开始遍历的,如果指定为False,则从最底层目录开始遍历。onerror可选,是一个函数,它调用时有一个参数, 一个OSError实例。报这个错误后,继续执行walk,或者抛出exception终止walk。followlinks可选,设置为true,则通过软链接访问目录。

# 获取path指定的路径的信息
print(os.stat(os.getcwd()))
# 像stat(),但是没有软链接
print(os.lstat(os.getcwd()))

运行结果:

os.stat_result(st_mode=16893, st_ino=656043, st_dev=2049, st_nlink=3, st_uid=1000, st_gid=1000, st_size=4096, st_atime=1565531003, st_mtime=1565531428, st_ctime=1565531428)
os.stat_result(st_mode=16893, st_ino=656043, st_dev=2049, st_nlink=3, st_uid=1000, st_gid=1000, st_size=4096, st_atime=1565531003, st_mtime=1565531428, st_ctime=1565531428)

os.stat(path)返回指定路径的信息,详见上面的运行结果。其中比较常用的有st_size和st_mtime。

每一项的含义如下:

st_mode: inode 保护模式
st_ino: inode 节点号
st_dev: inode 驻留的设备
st_nlink: inode 的链接数
st_uid: 所有者的用户ID
st_gid: 所有者的组ID
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据
st_atime: 上次访问的时间
st_mtime: 最后一次修改的时间
st_ctime: 由操作系统报告的"ctime"。

四、os修改文件的权限

# 检验文件的权限
print(os.access('os_folder/aaa.txt', os.F_OK))
print(os.access('os_folder/aaa.txt', os.R_OK))
print(os.access('os_folder/aaa.txt', os.W_OK))
print(os.access('os_folder/aaa.txt', os.X_OK))import stat# 修改文件的权限
os.chmod('os_folder/aaa.txt', stat.S_IRUSR)
print(os.access('os_folder/aaa.txt', os.X_OK))
print(os.access('os_folder/aaa.txt', os.W_OK))
os.chmod('os_folder/aaa.txt', stat.S_IRWXU)

运行结果:

True
True
True
True
False
False

os.access(file, mode)用于判断文件是否存在,是否可读,是否可写,是否可执行。

os.chmod(file, mode)用于修改文件的权限。

上面的代码中,通过os.access()依次判断了aaa.txt文件是否存在,是否可读,可写,可执行,一开始都是Ture,然后通过os.chmod()修改为只读,aaa.txt的可写和可执行变成False。

os.access()的mode常用参数:

os.F_OK: 作为access()的mode参数,判断path是否存在

os.R_OK: 包含在access()的mode参数中 , 判断path是否可读

os.W_OK: 包含在access()的mode参数中 , 判断path是否可写

os.X_OK: 包含在access()的mode参数中 ,判断path是否可执行

os.chmod()的mode常用参数:

stat.S_IXOTH: 其他用户有执行权限

stat.S_IWOTH: 其他用户有写权限

stat.S_IROTH: 其他用户有读权限

stat.S_IRWXO: 其他用户有全部权限

stat.S_IXGRP: 组用户有执行权限

stat.S_IWGRP: 组用户有写权限

stat.S_IRGRP: 组用户有读权限

stat.S_IRWXG: 组用户有全部权限

stat.S_IXUSR: 拥有者具有执行权限

stat.S_IWUSR: 拥有者具有写权限

stat.S_IRUSR: 拥有者具有读权限

stat.S_IRWXU: 拥有者有全部权限

Python os模块文件操作(二)相关推荐

  1. Python os模块文件操作(一)

    Python os模块文件操作(一) 一.文件描述符 在使用代码对文件进行操作时,为了指定操作的文件,避免不了要使用文件描述符,所以我们先介绍什么是文件描述符. 操作系统为了高效管理已经被打开的文件, ...

  2. python os模块安装_二十七、深入浅出Python中的 os模块

    「@Author: Runsen」 当初学Python的时候,把一些标准库和第三方开源库学的七零八落,不成系统,正好趁这个机会来系统的整理一下,先从Python常用的标准库os开始吧. os OS模块 ...

  3. python os.scandir文件操作

    scandir方法返回了一个DirEntry迭代器对象,它非常轻巧方便,并且能告诉你迭代文件的路径.之前案例中,我们检查了entry是一个文件或者是一个文件夹,与此同时,我们添加它的路径到列表中. 在 ...

  4. Python中的文件操作和异常

    Python中的文件操作和异常 文章目录 Python中的文件操作和异常 一.文件 01. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 文本文件和二进制文件 02. 文件的基本操作 ...

  5. python os模块打开文件_Python 文件操作之OS模块

    with open('filepath') as rename: for line in rename: ... with 命令下 不用使用close()函数关闭文件,打开的文件在with 代码块下有 ...

  6. python os模块下载_Python OS模块目录文件处理

    Python编程语言优势特点比较突出,在Python语言中,有一种标准模块叫OS模块,Python OS模块包含普遍的操作系统功能,如果你希望你的程序能够与平台无关的话,这个模块尤为重要,它允许一个程 ...

  7. Python os模块 -Python系统编程中的操作模块

    Python os模块 -Python系统编程中的操作模块 用途:处理(文件与目录)操作 以下为简单的常用操作 import os 导入os模块 help(os) 查看os模块帮助文档 os.name ...

  8. Python OS模块和文件处理

    Python OS模块和文件处理 文件处理 1. 打开和关闭文件 2. 读&写 3. 文件定位 OS模块 1. OS模块简介: 2. OS模块常用函数 3. OS模块常用方法实战 4. 例题练 ...

  9. python os复制文件_使用python os模块复制文件到指定文件夹的方法

    复制一个文件夹的文件到指定目录下 import os import shutil import time start_time = time.time() # 需要被复制的文件夹 old_path = ...

最新文章

  1. %02 java_02-java
  2. 【Xamarin开发 Android 系列 5】 Xamarin 的破解
  3. 人工智能成2020热搜专业,少儿编程未来可期!
  4. python PyQt5 QtWidgets.QWidget.setLayout()(将布局中的小部件重新父级化,以将窗口作为父级)
  5. Sublime Text 关闭自动更新
  6. 2013年06月电脑公司GHOSTXPSP3装机版◆年中推荐◆
  7. C/C++ 读取16进制文件
  8. Docker 实战:编写 Dockerfile
  9. import 导入和from导入的区别
  10. Objective-C 高性能的循环
  11. 2018 IEEE International Conference on Cyborg and Bionic Systems (CBS)国际会议的组织和参入感悟
  12. 微信公众号授权突破微信开放平台只能配置两个的限制
  13. 类成员函数作为线程函数使用
  14. 计算机无法显示移动硬盘,谁知道移动硬盘在电脑显示不出来是怎么回事?
  15. 遇到电脑任务栏卡死怎么办
  16. P0负载能力为 8 个 LSTTL 电路,P1-P3负载能力为4个 LSTTL 电路
  17. 调用Feign接口报错:HttpMessageNotReadableException:JSON parse error:Illegal character ((CTRL-CHAR, code 31)
  18. 端到端无人驾驶文献学习:End-to-end Interpretable Neural Motion Planner
  19. 南京工业大学python期末_南京工业大学燃爆期末复习总结
  20. 【状语从句练习题】since 的时态问题

热门文章

  1. 使用OTA绕过AppStore安装App
  2. flask笔记3-模板
  3. Android开发在路上:少去踩坑,多走捷径
  4. SharePoint咨询师之路:设计之前的那些事四:负载均衡 - web服务器
  5. eclipse导入工程报错解决
  6. Struts1中execute实现过滤控制
  7. Javascript图片滚动
  8. 容器编排技术 -- Kubernetes 给容器和Pod分配CPU资源
  9. Web渗透测试常规套路
  10. Flyweight设计模式