>> os.stat_result(st_mode=33188, st_ino=8618932538,st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=16, st_atime=1597527409,st_mtime=1597527409, st_ctime=15975274。小镇的夕阳|知道了这些,您可以使用Python超过99%的文件操作( 三 )。" />

小镇的夕阳|知道了这些,您可以使用Python超过99%的文件操作( 三 )


print(os.stat("text.txt"))>>> os.stat_result(st_mode=33188, st_ino=8618932538,st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=16, st_atime=1597527409,st_mtime=1597527409, st_ctime=1597527409)您也可以使用os.path单独获取统计信息 。
os.path.getatime()os.path.getctime()os.path.getmtime()os.path.getsize()路径库获取完整状态的另一种方法是使用pathlib.Path(“ text.txt”) 。 stat() 。它返回与os.stat()相同的对象 。
print(pathlib.Path("text.txt").stat())>>> os.stat_result(st_mode=33188, st_ino=8618932538, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=16, st_atime=1597528703, st_mtime=1597528703, st_ctime=1597528703)在以下各节中 , 我们将比较os和pathlib的更多方面 。
复制 , 移动和删除文件Python有许多内置模块来处理文件移动 。在您信任Google返回的第一个答案之前 , 您应该意识到 , 不同的模块选择会导致不同的性能 。一些模块将阻塞线程 , 直到文件移动完成 , 而其他模块则可能异步执行 。
关闭
shutil是用于移动 , 复制和删除文件和文件夹的最著名的模块 。它提供了4种仅复制文件的方法 。copy() , copy2()和copyfile() 。
copy()与 copy2():copy2()与copy()非常相似 。不同之处在于copy2()还复制文件的元数据 , 例如最近的访问时间 , 最近的修改时间 。但是根据Python文档 , 由于操作系统的限制 , 即使copy2()也无法复制所有元数据 。
shutil.copy("1.csv", "copy.csv")shutil.copy2("1.csv", "copy2.csv")print(pathlib.Path("1.csv").stat())print(pathlib.Path("copy.csv").stat())print(pathlib.Path("copy2.csv").stat())# 1.csv# os.stat_result(st_mode=33152, st_ino=8618884732, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=11, st_atime=1597570395, st_mtime=1597259421, st_ctime=1597570360)# copy.csv# os.stat_result(st_mode=33152, st_ino=8618983930, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=11, st_atime=1597570387, st_mtime=1597570395, st_ctime=1597570395)# copy2.csv# os.stat_result(st_mode=33152, st_ino=8618983989, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=11, st_atime=1597570395, st_mtime=1597259421, st_ctime=1597570395)367/5000
copy()与 copyfile():copy()将新文件的权限设置为与原始文件相同 , 但是copyfile()不会复制其权限模式 。其次 , copy()的目标可以是目录 。如果存在同名文件 , 则将其覆盖 , 否则 , 将创建一个新文件 。但是 , copyfile()的目的地必须是目标文件名 。
shutil.copy("1.csv", "copy.csv")shutil.copyfile("1.csv", "copyfile.csv")print(pathlib.Path("1.csv").stat())print(pathlib.Path("copy.csv").stat())print(pathlib.Path("copyfile.csv").stat())# 1.csv# os.stat_result(st_mode=33152, st_ino=8618884732, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=11, st_atime=1597570395, st_mtime=1597259421, st_ctime=1597570360)# copy.csv# os.stat_result(st_mode=33152, st_ino=8618983930, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=11, st_atime=1597570387, st_mtime=1597570395, st_ctime=1597570395)# copyfile.csv# permission (st_mode) is changed# os.stat_result(st_mode=33188, st_ino=8618984694, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=11, st_atime=1597570387, st_mtime=1597570395, st_ctime=1597570395)shutil.copyfile("1.csv", "./source")# IsADirectoryError: [Errno 21] Is a directory: './source'


推荐阅读