Python 文件操作
目录
引入模块
>>> import os
>>> import os.path
>>>import shutil #导入shutil模块
常用操作
创建文件
重命名文件
>>> os.chdir(r"D:\teaching\自动化运维\练习")
>>> os.rename("7-1.py","7.1.py")
>>> os.listdir('.')
['4-1.py', '5-1.py', '5-2.py', '5-3.py', '5-4.py', '5-5.py', '5-6.py', '5-7.py', '5-8.py', '6-1.py', '7.1.py', 'hamlet.txt']
文件路径拆解
查看文件类型
>>> os.path.isfile("7.1.py")
True
>>> os.path.isdir("7.1.py")
False
查看文件属性
对于linux中的文件或者目录中有3个时间,分别是:atime、ctime、mtime.[1]
- atime:Access time,最后一次访问文件(读取或执行)的时间。
- citme:Change time,最后一次改变文件(属性)或者目录(属性)的时间。
- mtime:Modify time,最后一次改变文件(内容)或目录(内容)的时间。
查看文件修改时间,以mtime为例::
>>>os.stat('os_file.py')
>>> os.stat('os_file.py').st_mtime
>>> time.localtime(os.stat('os_file.py').st_mtime)
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.stat('os_file.py').st_mtime))
函数整理:
import time import os def file_modified_time(name): mt=os.stat(name).st_mtime mt2 =time.localtime(mt) mt3=time.strftime('%Y-%m-%d %H:%M:%S',mt2) return mt3 modified_time = file_modified_time('hamlet.txt') print('hamlet.txt',"修改时间",modified_time)
查看文件大小
>>> os.path.getsize('hamlet.txt')
180768
函数整理:
def get_size(name): size=os.path.getsize(name) size /= 1024 #换算为KB size = round(size,2)#保留2位小数 return size print('hamlet.txt',"文件大小",get_size('hamlet.txt'),'KB')
移动文件
>>> os.rename("7.1.py",r"D:\teaching\自动化运维\7.1.py")
复制文件
>>> shutil.copyfile("7.1.py",r"D:\teaching\自动化运维\7.1.py")
'D:\\teaching\\自动化运维\\7.1.py'
查找文件
归档文件(打包)
归档函数:make_archive()[2]
语法:shutil.make_archive(base_name, format, base_dir)
base_name ---> 创建的目标文件名,包括路径,减去任何特定格式的扩展
format ---> 压缩包格式后缀:zip、tar、bztar、gztar
base_dir ---> 开始打包的路径
返回值:返回打包文件的绝对路径和名称
>>> path_1=r'D:\Work\教学\2019-2020-2\第6周'
>>> path_2=r'D:\Work\教学\2019-2020-2\第六周'
>>> new_path = shutil.make_archive(path_2, 'zip', path_1)
解档文件(解包)
解包:将归档的文件进行释放
解包函数:unpack_archive()
语法:shutil.unpack_archive(filename, extract_dir)
filename ---> 需要解包的文件,需要写明文件的后缀
extract_dir ---> 解包后文件存放位置
返回值:None
>>> os.chdir(r'D:\Work\教学\2019-2020-2')
>>> os.listdir(r'D:\Work\教学\2019-2020-2')
>>> shutil.unpack_archive('./第六周.zip','./第六周')
上面的代码将刚压缩得到的文件第六周.zip解压缩至 同名文件夹内
思考:如何编写函数,使得可以自动解压至同名文件夹?
删除文件
>>> shutil.rmtree(r'D:\Work\教学\2019-2020-2/第六周')
获取文件属性:os.stat(file)
修改文件权限与时间戳:os.chmod(file)
终止当前进程:os.exit()
创建文件 -- touch命令
1.2 查看文件类型 -- file命令
1.3 文件删除命令—— rm
1.4 文件移动命令 —— mv
1.5 文件复制命令 —— cp
1.5.1 基本用法:复制一个源文件到目标文件(夹) 1.5.2 复制多个文件到目标文件(夹)下 1.5.3 复制文件当文件重叠时不提示 1.5.4 递归复制源文件夹到目标文件夹下 1.5.5 只有源文件较目标文件新时复制
1.6 文件操作命令 —— find命令 1.7 压缩及解压缩命令 —— gzip、bzip2 1.8 打包及压缩命令 —— tar
[1]Linux中的ctime、atime、mtime理解:https://blog.csdn.net/qq_36795474/java/article/details/80215856
[2]Python基础---文件File的处理_make_archive()归档、解包、压缩、解压: https://blog.csdn.net/abcdasdff/article/details/82528658