# -*- coding: utf-8 -*-
# @Date : 2018-09-30
# @Author : Peng Shiyu
# 使用os 模块获取文件属性
# stat 函数可以用来获取一个存在文件的信息
import os
# 获取一个文件的状态
print(os.stat("source/poem.txt"))
"""
os.stat_result(st_mode=33188, st_ino=34523939,
st_dev=16777220, st_nlink=1, st_uid=501, st_gid=80,
st_size=152, st_atime=1538296119, st_mtime=1538296028,
st_ctime=1538296028)
"""
# 获取一个打开文件的状态
f = open("source/poem.txt", "r")
print(os.fstat(f.fileno()))
"""
os.stat_result(st_mode=33188, st_ino=34523939,
st_dev=16777220, st_nlink=1, st_uid=501, st_gid=80,
st_size=152, st_atime=1538296119, st_mtime=1538296028,
st_ctime=1538296028)
"""
"""
st_mode (权限模式)
st_ino (inode number)
st_dev (device)
st_nlink (number of hard links)
st_uid (所有者用户ID)
st_gid (所有者所在组ID )
st_size (文件大小, 字节)
st_atime (最近一次访问时间)
st_mtime (最近修改时间)
st_ctime (平台相关,Unix 修改时间, Windows 创建时间)
"""
# 使用os 模块修改文件的权限和时间戳
import os
import stat
from datetime import datetime
def copy_file(source, target):
fs = open(source, "rb")
ft = open(target, "wb")
while True:
chunk = fs.read(512)
if not chunk:
break
ft.write(chunk)
ft.close()
fs.close()
def show_stat(filename):
st = os.stat(filename)
at = datetime.fromtimestamp(st.st_atime)
mt = datetime.fromtimestamp(st.st_mtime)
print("访问时间: %s 修改时间: %s" % (at, mt))
def copy_time(source, target):
stat_s = os.stat(source)
os.chmod(target, stat.S_IMODE(stat_s.st_mode))
os.utime(target, (stat_s[stat.ST_ATIME], stat_s[stat.ST_MTIME]))
if __name__ == '__main__':
source = "source/poem.txt"
target = "source/poem.bak"
copy_file(source, target)
print("文件创建")
show_stat(source)
show_stat(target)
copy_time(source, target)
print("时间复制")
show_stat(source)
show_stat(target)