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 创建成功!