目录和文件操作

Posted zuzhuangmengxiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目录和文件操作相关的知识,希望对你有一定的参考价值。

创建目录:

1 import os
2 os.makedirs(tmp/python/fileop, exist_ok=True)

  会在当前目录下递归创建 tmp/python/fileop 目录,exist_ok=True 指定了,如果某个要创建的目录已经存在,也不会报错

删除目录或文件:

1 # 删除目录 shutil.rmtree() 可以递归的删除某个目录所有的子目录和子文件
2 import shutil
3 shutil.rmtree(tmp)
4 
5 # 删除文件
6 os.remove(sdf.py)

拷贝文件:

1 from shutil import copyfile
2 
3 # 拷贝 d:/tools/first.py 到 e:/first.py 
4 copyfile(d:/tools/first.py, e:/first.py)   # 如果拷贝前,e:/first.py 已经存在,则会被拷贝覆盖

拷贝目录:

1 from shutil import copytree
2 
3 # 拷贝 d:/tools/aaa 目录中所有的内容 到 e:/bbb 中
4 copytree(d:/tools/aaa, e:/new/bbb)  #拷贝前, 目标目录必须 不存在 ,否则会报错

修改文件名、目录名:

1 import os
2 
3 # 修改目录名 d:/tools/aaa 为 d:/tools/bbb
4 os.rename(d:/tools/aaa,d:/tools/bbb)  # 如果重命名之前 d:/tools/second.py 已经存在,则会被覆盖
5 
6 # 修改文件名 d:/tools/first.py 为 d:/tools/second.py
7 os.rename(d:/tools/first.py,d:/tools/second.py)

对文件路径名的操作:

 1 >>> import os
 2 >>> path = /Users/beazley/Data/data.csv
 3 
 4 >>> # 获取路径中的文件名部分
 5 >>> os.path.basename(path)
 6 data.csv
 7 
 8 >>> # 获取路径中的目录部分
 9 >>> os.path.dirname(path)
10 /Users/beazley/Data
11 
12 >>> # 文件路径的拼接
13 >>> os.path.join(tmp, data, os.path.basename(path))
14 tmp/data/data.csv

判断目录、文件是否存在:

 1 import os
 2 os.path.exists(d:/systems/cmd.exe)  # True存在,False不存在
 3 os.path.exists(d:/systems)
 4 
 5 # 判断指定路径是否是文件
 6 import os
 7 
 8 # 返回值为True 表示是文件
 9 os.path.isfile(d:/systems/cmd.exe)
10 
11 # 判断指定路径是否是目录
12 import os
13 
14 # 返回值为True 表示是目录
15 os.path.isdir(d:/systems)

获取文件的大小和日期:

1 >>> os.path.getsize(/etc/passwd)
2 3669
3 >>> os.path.getmtime(/etc/passwd)
4 1272478234.0
5 >>> import time
6 >>> time.ctime(os.path.getmtime(/etc/passwd))
7 Wed Apr 28 13:10:34 2010
8 >>>

递归遍历目录下面所有的文件:

 1 import os
 2 
 3 # 目标目录
 4 targetDir = rd:	mputildistcheck
 5 files = []
 6 dirs  = []
 7 
 8 # 下面的三个变量 dirpath, dirnames, filenames
 9 # dirpath 代表当前遍历到的目录名
10 # dirnames 是列表对象,存放当前dirpath中的所有子目录名
11 # filenames 是列表对象,存放当前dirpath中的所有文件名
12 
13 for (dirpath, dirnames, filenames) in os.walk(targetDir):
14    files += filenames
15    dirs += dirnames
16 
17 print(files)
18 print(dirs)

得到目录下所有的文件和子目录名:

1 import os
2 
3 # 目标目录
4 targetDir = rd:	mputildistcheck
5 
6 
7 files =  os.listdir(targetDir)
8 print(files)

  如果只需要获取目录中所有的文件或者只需要子目录:

 1 import os
 2 from os.path import isfile, join,isdir
 3 
 4 # 目标目录
 5 targetDir = rd:	mputildistcheck
 6 
 7 # 所有的文件
 8 print([f for f in os.listdir(targetDir) if isfile(join(targetDir, f))])
 9 
10 # 所有的目录
11 print([f for f in os.listdir(targetDir) if isdir(join(targetDir, f))])

得到目录中指定扩展名的文件和子目录:

1 import glob
2 exes = glob.glob(rd:	mp*.txt)
3 
4 print(exes)

上面这个如果是Windows系统,可能会有异常(非要用glob,可以用字符串的replace方法把替换成/),可以使用endswith:

1 import os
2 for (dirpath, dirnames, filenames) in os.walk(targetDir):
3     for filename in filenames:
4         if filename.endswith(.txt):
5             print(filename)

以上是关于目录和文件操作的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

常用python日期日志获取内容循环的代码片段