零基础小白必看:python基本操作-文件、目录及路径

使用python的os模块 , 简单方便完成对文件夹、文件及路径的管理与访问操作 。
1 前言在最近开发中 , 经常需要对文件进行读取、遍历、修改等操作 , 想要快速、简单的完成这些操作 , 我选择用 python。 通过 python 的标准内置 os 模块 , 只需要几行代码 , 即可完成想要的操作 。 经过对 os 的使用 , 本文把 os 模块的常用的操作进行总结 , 主要分为以下几个划分:

  • 文件夹操作:即文件夹的创建、修改(改名/移动) , 查询(查看、遍历)、删除等 。
  • 文件操作:即文件的创建、修改、读取、删除等 。
  • (文件夹/文件)路径操作:即文件夹或文件的路径操作 , 如绝对路径 , 文件名与路径分割 , 扩展名分割等
本文涉及常用 的 os 函数的使用展示 , 主要使用 python 交互模式下进行代码说明 。 后续操作默认已经引入 os 模块 , 如下:
import os复制代码
零基础小白必看:python基本操作-文件、目录及路径文章插图
如果大家在学习中遇到困难 , 想找一个python学习交流环境 , 可以加入我们的python裙 , 关注小编 , 并私信“01”即可进裙 , 领取python学习资料 , 会节约很多时间 , 减少很多遇到的难题 。
2 文件夹操作以本地 E://pythontest 目录作为演示目录 , 此目录下当前文件如下:
test │ test.txt └─test-1test-1.txt复制代码test 及 test-1 是文件夹 , test.txt 及 test-1.txt 是文件 。
2.1 查询操作熟悉 linux 同学应该对 ls / pwd / cd 等操作不陌生 , 对应的 python 也有对应的方法 , 主要包括:
  • listdir : 文件及目录列表
  • getcwd :获取当前目录
  • chdir :更换目录
  • stat :文件及目录基本信息
  • walk :递归遍历目录
>>> os.chdir("E://pythontest")# 更改目录>>> os.getcwd()# 获取当前目录'E:\\pythontest'>>> os.listdir("test")# 文件及目录列表 , 相对路径['test-1', 'test.txt']>>> os.listdir("E://pythontest/test")# 文件及目录列表 , 绝对路径['test-1', 'test.txt']>>> os.stat("test")# 获取目录信息os.stat_result(st_mode=16895, st_ino=4503599627377599, st_dev=266147611, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1590833033, st_mtime=1590832647, st_ctime=1590832207)>>> os.stat("test/test.txt")# 获取文件信息os.stat_result(st_mode=33206, st_ino=2251799813692354, st_dev=266147611, st_nlink=1, st_uid=0, st_gid=0, st_size=4, st_atime=1590832653, st_mtime=1590832609, st_ctime=1590832598)复制代码其中 stat 函数返回的是文件或者目录的基本信息 , 具体如下:
  • 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: 创建时间 。
日常使用中 , 我们一般使用 st_size 、st_ctime 及 st_mtime 获取文件大小 , 创建时间 , 修改时间 。 另外 , 我们看到输出的时间是秒数 , 在这里提一下 , 关于日期的转换处理 。
(1)秒数转日期时间格式字符串
>>> import time# 引入time模块>>> timestruct = time.localtime(1590803070)# 转换为时间结构体>>> print(timestruct)time.struct_time(tm_year=2020, tm_mon=5, tm_mday=30, tm_hour=9, tm_min=44, tm_sec=30, tm_wday=5, tm_yday=151, tm_isdst=0)>>> time.strftime("%Y-%m-%d %H:%M:%S",timestruct)# 格式化时间'2020-05-30 09:44:30'复制代码