文件夹基础操作
一、目录操作
1.1导入os模块
import os
1.2输出当前工作目录
os.getcwd()
1.3路径拼接
os.path.join(param1, param2, ...)
1.4输出指定路径下的所有文件夹和文件
os.listdir([path name])
1.5判断指定路径中的指定项是否为文件夹
os.path.isdir()
- 示例
import os
files = os.listdir('d:')
for file in files:
print(file, os.path.isdir(os.path.join('d:', file)))## 输出指定项是否为文件夹
1.6os.scandir()
- 作用同
os.listdir()
,但是功能较为强大 - 可以使用迭代器遍历出其中的所有项
for file in os.scandir():
...do something...
1.6.1获取文件名
file.name
1.6.2获取文件路径
file.path
1.6.3指定项是否为文件夹
file.is_dir()
1.6.4指定项是否为文件
file.is_file()
1.6.5获取文件信息
file.stat()
返回信息内容
- st_size:文件大小(单位:bytes)
- st_atime:文件的最近访问时间
- st_mtime:文件最近修改时间
- st_ctime:windows下表示创建时间
- st_birthtime:只在Mac、Linux下可用,表示创建时间
二、文件或文件夹操作
2.1遍历文件夹
2.1.1os.walk()
- 用法
os.walk(绝对路径或相对路径)
- 示例
for dirpath, dirnames, files in os.walk('d:/'):
...do something...
2.2搜索文件
2.2.1glob.glob()
此函数需要导入glob模块
- 用法
import glob
glob.glob(文件名) # 可以使用通配符
- 方法参数
recursive:值为boolean类型,为true时会进入文件夹内搜索
2.3单独获取指定文件信息
2.3.1os.stat()
- 用法
os.stat(指定文件路径) # 返回内容同file.stat()
2.4文件或文件夹操作
2.4.1文件夹的创建
- 新建文件夹
os.makedir(文件夹名) # 创建文件夹,当文件夹已存在时会报错
- 防止重复创建文件夹
if not os.path.exists(文件夹名):
os.makedir(文件夹名)
- 创建多层文件夹
os.makedirs('第一层/第二层/第三层')
2.4.2复制文件
导入shutil模块
- 语法
import shutil
shutil.copy([文件夹路径], [要复制到的路径]) # 第二个参数为某个文件夹的路径会将文件直接复制,若为文件路径则会将文件复制重命名为指定的文件名
2.4.3复制文件夹
- 语法
import shutil
shutil.copytree([要复制的文件夹], [复制路径])
此操作会将文件夹内的所有文件和文件夹都复制到新的路径
2.4.4移动文件或文件夹
- 语法
import shutil
shutil.move([要移动的项目], [移动位置])
2.4.5重命名文件或文件夹
- 语法
import os
os.rename([项目名], [新名称])
2.4.6删除文件
- 语法
import os
os.remove([文件名])
2.4.7删除文件夹
- 语法
import shutil
shutil.rmtree([文件夹])
三、创建临时文件或文件夹
3.1创建临时文件
- 示例
from tempfile import TemporaryFile
f = TemporaryFile('w+') # 创建临文件
f.write('hello world!') # 写入数据
f.seek(0) # 移动指针
data = f.readlines() # 读取文件
print(data)
print(f.name)
f.close()
3.2创建临时文件夹
- 示例
from tempfile import TemporaryDirectory
with TemporaryDirectory() as tempDir:
print(tempDir)
在程序结束后临时文件和文件夹都会被删除
四、常用函数
4.1判断字符串是否通配符匹配
4.1.1fnmatch.fnmatch()
此函数需要导入fnmatch模块
- 用法
fnmatch.fnmatch([字符串], [带通配符的字符串]) # 返回boolean值
4.2Unix时间戳
4.2.1time.ctime()
此函数需导入time模块
- 用法
time.ctime(时间戳)
4.2.2datatime.datetime.fromtimestamp()
此函数需导入datetime模块
- 用法
datetime.datetime.fromtimestamp(时间戳)