6.7.2 复制文件元数据
默认地,在UNIX下创建一个新文件时,它会根据当前用户的umask接受权限。要把权限从一个文件复制到另一个文件,可以使用copymode()。
import os
import shutil
import subprocess
with open('file_to_change.txt','wt') as f:
f.write('content')
os.chmod('file_to_change.txt',0o444)
print('BEFORE:',oct(os.stat('file_to_change.txt').st_mode))
shutil.copymode('shutil_copymode.py','file_to_change.txt')
print('AFTER:',oct(os.stat('file_to_change.txt').st_mode))
这个示例脚本创建了一个要修改的文件,然后使用copymode()将脚本的权限复制到示例文件。
运行结果:
BEFORE: 0o100444
AFTER: 0o100666
要为文件复制其他元数据,可以使用copystat()。
import os
import shutil
import time
def show_file_info(filename):
stat_info = os.stat(filename)
print(' Mode :',oct(stat_info.st_mode))
print(' Create :',time.ctime(stat_info.st_ctime))
print(' Accessed:',time.ctime(stat_info.st_atime))
print(' Modified:',time.ctime(stat_info.st_mtime))
with open('file_to_change.txt','wt') as f:
f.write('content')
os.chmod('file_to_change.txt',0o444)
print('BEFORE:')
show_file_info('file_to_change.txt')
shutil.copystat('shutil_copystat.py','file_to_change.txt')
print('AFTER:')
show_file_info('file_to_change.txt')
使用copystat()只会复制与文件关联的权限和日期。
运行结果: