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)