Python目录操作

版权声明:编写不易,转载请注明出处 https://blog.csdn.net/zha6476003/article/details/82934491

os和os.path模块

os模块

import os

os模块下的常用函数

函数 说明
os.getcwd() 返回当前工作路径
os.listdir(path) 返回指定路径下的文件和目录信息
os.mkdir(path) 创建目录(直接括号中输入路径及新建的目录名称)
os.makedirs(path) 创建多级目录
os.rmdir(path) 删除一个目录
os.removedirs(path) 删除多级目录
os.chdir(path) 把path设置为工作目录
os.rename(src, dst) 重命名文件(src需要重命名的路径及文件,dst路径及新的文件名)

示例代码:

import os
print('返回当前工作路径:', os.getcwd())
print('返回指定路径下的文件和目录信息:', os.listdir(os.getcwd()))
os.mkdir('D:\\xuexi\\python\\test')  # D:\\xuexi\\python下创建一个叫test的目录(文件夹)
os.makedirs('D:\\one\\two\\test')  # D:\\xuexi\\python下创建一个叫test的目录(文件夹)
os.rmdir('D:\\xuexi\\python\\test')  # 删除一个目录(文件夹)
os.removedirs('D:\\one\\two\\test')  # 删除多级目录
os.chdir('D:/xuexi/python')  # 把path设置为工作目录
os.rename('D:/xuexi/python/a.txt', 'D:/xuexi/python/b.txt')  # 重命名a.txt 为b.txt

os.path模块

函数 说明
os.path.exists(path) 用于判断目录或文件是否存在,如果存在则返回True,否则返回False
os.path.splitext() 分离文件名和扩展名
os.path.basename(path) 从目录中提取文件名
os.path.dirname(path) 获取一个文件的上级绝对路径
os.path.isdir(path) 用于判断一个目录是否有效,有效返回True,无效返回False
os.abspath(path) 获取文件或目录的绝对路径

示例代码:

import os
print(os.path.exists('D:/xuexi/python'))  # 用于判断目录或文件是否存在,如果存在则返回True,否则返回False
print(os.path.splitext('a.txt'))  # 分离文件名和扩展名
print(os.path.basename('D:/xuexi/python'))  # 从目录中提取文件名
print(os.path.dirname('D:/xuexi/python/a.txt'))  # 获取一个文件的上级绝对路径 返回 D:/xuexi/python
print(os.path.isdir('D:/xuexi/python/a.txt'))  # 用于判断一个目录是否有效,有效返回True,无效返回False

获取文件基本信息

示例代码:

import os   # 导入os模块
fileinfo = os.stat("D:/mr.png") # 获取文件的基本信息
print("文件完整路径:", os.path.abspath("D:/mr.png")) # 获取文件的完整数路径
# 输出文件的基本信息
print("索引号:", fileinfo.st_ino)
print("设备名:", fileinfo.st_dev)
print("文件大小:", fileinfo.st_size," 字节")
print("最后一次访问时间:", fileinfo.st_atime)
print("最后一次修改时间:", fileinfo.st_mtime)
print("最后一次状态变化时间:", fileinfo.st_ctime)

执行结果:
	文件完整路径: D:\mr.png
	索引号: 9007199254778616
	设备名: 1988366925
	文件大小: 4777  字节
	最后一次访问时间: 1538579261.3269966
	最后一次修改时间: 1521534436.0
	最后一次状态变化时间: 1538579261.3269966

上面的st_xxx这些属性就可以看到文件的基本信息了,但是返回的时间格式未进行格式化,改进代码如下:

import os   # 导入os模块
import time  # 导入时间模块


def formatTime(longtime):
    """格式化日期时间的函数longtime:要格式化的时间"""

    return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(longtime))


def formatByte(number):
    """格式化日期时间的函数
      number:要格式化的字节数
    """
    for (scale, label) in [(1024*1024*1024, "GB"), (1024*1024, "MB"), (1024, "KB")]:

        if number >= scale:   # 如果文件大小大于等于1KB
            return "%.2f %s" %(number * 1.0 / scale, label)
        elif number == 1:  # 如果文件大小为1字节
            return "1 字节"
        else:   # 处理小于1KB的情况
            byte = "%.2f" % (number or 0)
    return (byte[:-3] if byte.endswith('.00') else byte)+" 字节"  # 去掉结尾的.00,并且加上单位“字节”


if __name__ == '__main__':
    fileinfo = os.stat("D:/mr.png")  # 获取文件的基本信息
    print("文件完整路径:", os.path.abspath("D:/mr.png"))  # 获取文件的完整数路径
    # 输出文件的基本信息
    print("索引号:", fileinfo.st_ino)
    print("设备名:", fileinfo.st_dev)
    print("文件大小:", formatByte(fileinfo.st_size))
    print("最后一次访问时间:", formatTime(fileinfo.st_atime))
    print("最后一次修改时间:", formatTime(fileinfo.st_mtime))
    print("最后一次状态变化时间:", formatTime(fileinfo.st_ctime))

执行结果:
	文件完整路径: D:\mr.png
	索引号: 9007199254778616
	设备名: 1988366925
	文件大小: 4.67 KB
	最后一次访问时间: 2018-10-03 23:07:41
	最后一次修改时间: 2018-03-20 16:27:16
	最后一次状态变化时间: 2018-10-03 23:07:41

实践-批量创建文件

示例代码:

import os     # 文件或目录模块
import time   # 导入时间模块


def nsfile(s):
    """The number of new expected documents"""
    # 判断文件夹是否存在,如果不存在则创建
    b = os.path.exists("D:\\testFile\\")
    if b:
        print("该目录存在!")
    else:
        os.mkdir("D:\\testFile\\")  # 不存在就创建该目录
        # 生成文件
    for i in range(1, s + 1):
        localtime = time.strftime("%Y%m%d%H%M%S", time.localtime())  # 获取当前系统时间 返回这种格式2018-10-03 23-30-08
        # 以当前系统时间作为文件名称
        filename = "D:\\testFile\\" + localtime + ".txt"
        f = open(filename, 'ab')  # a:以追加模式打开(必要时可以创建)append;b:表示二进制
        # 文件内写入的信息
        testnote = '文件测试'
        # 写入文件信息
        f.write(testnote.encode('utf-8'))
        f.close()
        # 输出第几个文件和对应的文件名称
        print("file" + " " + str(i) + ":" + str(localtime) + ".txt")
        time.sleep(1)     # 休眠一秒
    print('生成文件成功!')


if __name__ == '__main__':
    count = int(input("请输入需要生成的文件数:"))    # 获取输入的文件个数
    nsfile(count)

执行结果:
	请输入需要生成的文件数:2
	file 1:20181003233848.txt
	file 2:20181003233849.txt
	生成文件成功!

实践-批量创建目录

示例代码:

import os  # 文件或目录模块

path = 'D:\\testFile\\'  # 外层路径


def folder(s):
    for i in range(1, s + 1):
        # 设置文件夹名称
        folder_name = path + str('test目录' + str(i))
        # 检测文件夹是否存在
        if isExists(folder_name):
            print("该目录存在!")
        else:
            # 不存在进行创建
            os.makedirs(folder_name)
            if isExists(folder_name):
                print('文件夹', folder_name, '创建成功!')


# 检测文件夹是否存在
def isExists(folder_name):
    b = os.path.exists(folder_name)
    return b


if __name__ == '__main__':
    s = int(input("请输入需要生成的文件夹个数:"))  # 获取输入的文件夹个数
    folder(s)

执行结果:
	请输入需要生成的文件夹个数:2
	文件夹 D:\testFile\test目录1 创建成功!
	文件夹 D:\testFile\test目录2 创建成功!

猜你喜欢

转载自blog.csdn.net/zha6476003/article/details/82934491