1、os.stat() 和 os.path
Python可以使用os.stat()
和 os.path
获取文件和文件夹属性的相关信息。
1)os.stat()
import os
import time
import grp
import pwd
def formatTime(atime):
import time
return time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(atime))
#文件
fileinfo = os.stat("/etc/passwd")
#文件所有者
uid = fileinfo.st_uid
gid = fileinfo.st_gid
user = pwd.getpwuid(uid)[0]
group = grp.getgrgid(gid)[0]
print("user = ",user)
print("group = ",group)
print("最后一次访问时间:",formatTime(fileinfo.st_atime))
print("最后一次修改时间:",formatTime(fileinfo.st_mtime))
print("最后一次状态变化的时间:",formatTime(fileinfo.st_ctime))
print("索引号:",fileinfo.st_ino)
print("被连接数目:",fileinfo.st_dev)
print("文件大小:",fileinfo.st_size,"字节")
print("最后一次访问时间:",fileinfo.st_atime)
print("最后一次修改时间:",fileinfo.st_mtime)
print("最后一次状态变化的时间:",fileinfo.st_ctime)
#目录
fileinfo = os.stat("/etc")
#文件夹所有者
uid = fileinfo.st_uid
gid = fileinfo.st_gid
user = pwd.getpwuid(uid)[0]
group = grp.getgrgid(gid)[0]
print("user = ",user)
print("group = ",group)
print("最后一次访问时间:",formatTime(fileinfo.st_atime))
print("最后一次修改时间:",formatTime(fileinfo.st_mtime))
print("最后一次状态变化的时间:",formatTime(fileinfo.st_ctime))
print("索引号:",fileinfo.st_ino)
print("被连接数目:",fileinfo.st_dev)
print("文件大小:",fileinfo.st_size,"字节")
print("最后一次访问时间:",fileinfo.st_atime)
print("最后一次修改时间:",fileinfo.st_mtime)
print("最后一次状态变化的时间:",fileinfo.st_ctime)
2)使用os.path获取文件和文件夹属性信息
import os
import time
def formatTime(atime):
import time
return time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(atime))
# -------------------------------------------------------
#
filePath = '/etc/passwd'
print('\n'+filePath)
accessTime = os.path.getatime(filePath)
print('访问时间:',accessTime,time.ctime(accessTime))
print(formatTime(accessTime))
createTime = os.path.getctime(filePath)
print('创建时间:',createTime,time.ctime())
print(formatTime(createTime))
modifyTime = os.path.getmtime(filePath)
print('修改时间:',modifyTime,time.ctime(modifyTime))
print(formatTime(modifyTime))
# -------------------------------------------------------
#
filePath = '/etc'
print('\n'+filePath)
accessTime = os.path.getatime(filePath)
print('访问时间:',accessTime,time.ctime(accessTime))
print(formatTime(accessTime))
createTime = os.path.getctime(filePath)
print('创建时间:',createTime,time.ctime(createTime))
print(formatTime(createTime))
modifyTime = os.path.getmtime(filePath)
print('修改时间:',modifyTime,time.ctime(modifyTime))
print(formatTime(modifyTime))
2、获取文件夹下所有文件
Python中获取文件夹下所有文件可以使用os.listdir()
通过递归遍历,也可以使用os.walk()
获取,还可以使用os.scandir()
获取文件夹下所有文件。os.scandir()
在Python 3.5 及更高版本中可以使用。os.scandir()
的效率比 os.walk()
高。
1)使用os.listdir()递归遍历
import os
def readDir(dirPath):
if dirPath[-1] == '/':
print u'文件夹路径末尾不能加/'
return
allFiles = []
if os.path.isdir(dirPath):
fileList = os.listdir(dirPath)
for f in fileList:
f = dirPath+'/'+f
if os.path.isdir(f):
subFiles = readDir(f)
allFiles = subFiles + allFiles #合并当前目录与子目录的所有文件路径
else:
allFiles.append(f)
return allFiles
else:
return 'Error,not a dir'
print(readDir("/etc"))
2)使用os.walk()获取文件夹下所有文件
import os
def get_filepaths(directory):
"""
将生成目录中的文件名
通过自顶向下或自底向上遍历树。 为每一个
根目录top的树中的目录(包括top本身),
它会产生一个3元组(dirpath, dirnames, filename)
"""
file_paths = [] #该列表将存储所有完整的文件路径
for root, directories, files in os.walk(directory):
for filename in files:
# 连接两个字符串以形成完整的文件路径。
filepath = os.path.join(root, filename)
file_paths.append(filepath)
return file_paths
full_file_paths = get_filepaths("/etc")
print(full_file_paths)
3)使用os.scandir()获取文件夹下所有文件
import os
with os.scandir("/etc") as i:
for entry in i:
if entry.is_file():
print(entry.name)