8.3.3 获取文件信息
os.path.isfile()判断是否是文件,如果是将返回True,否则False。
os.path.isdir()判断是否是目录,……
如果路径不存在,这两个函数都返回False。
模块os.path中的其他函数提供了关于文件的信息,
如:os.path.getsize()在不必打开和扫描某个文件的情况下以字节为单位返回该文件的大小。
os.path.getmtime()可以得到文件上次被修改的时间。注意:其返回值是1970年起到文件上次被修改的时间的秒数,必须调用函数time.ctime()才能将该结果转换为以及理解的形式。注意,在使用time模块时一定也要先导入。
大憨注:为何计算机的文件计时从1970年开始,貌似大憨接触过的C语言也是这样,这可能是与unix操作系统的发明时间有关吧,unix的出现是在1969年,它几乎是现在所有操作系统的鼻祖。
练习递归目录列表:(在试这个例子的时候最好找个文件比较少的目录)
def print_dir_info(dir_path):
for name in os.listdir(dir_path):
full_path = os.path.join(dir_path, name)
file_size = os.path.getsize(full_path)
mod_time = time.ctime(os.path.getmtime(full_path)
print("%-32s: %8d bytes, modified %s" % (name, file_size, mod_time))
如果想输出其他的文件信息,浏览os.path模块的文档。
至于如何浏览,大憨比较喜欢的方式是在终端中输入python,进入python的命令行交互界面:输入help(os.path),但是不要忘了导入要查询的模块啊。
8.3.4 重命名,移动,复制和删除文件
模块shutil中包含了操作文件的函数。
>>>import shutil
shutil.move()两个作用:1 重命名一个文件,2 将一个文件移动到另外一个目录下。
>>>shutil.move(“server.log”, “server.log.backup”) //重命名文件
>>>shutil.move(“server.log”, “/tmp”) //移动文件
大憨注:move()的功能与linux下的mv命令其实是一样的。
shutil.rename()也可以重命名文件。不过一般用move()。
shutil.copy()将一个文件复制为具有一个新名称的文件,或者复制到一个新目录下。
shutil.remove()和shutile.unlink()可以删除文件。
在linux下或者unix下,shutil.chmod()可以改变一个文件或者目录的权限。
大憨注:文件权限是使用linux,unix必须知道的和懂得的,有时配置或者安装软件,如果文件权限没有弄好,是整不成的。
8.3.5轮换文件。
例子是需要改很多日志文件的序号,前面的文件名都一样。
利用递归的思路,注意不要时文件发生覆盖,关键在于如何处理当前文件。
8.3.6 创建和删除目录
os.mkdir()实现创建一个空目录,注意:要创建的目录其父目录首先要存在。
os.mkdirs()该函数可以创建不存在的父目录。
os.rmdir()删除目录,仅对空目录有效。如果要删除的目录不为空,首先需要删除该目录的内容。
shutil.rmtree()可以在目录包含其他文件和子目录的情况下将该目录删除,注:要谨慎使用。
8.3.7通配(globbing)
通配模块glob。
glob.glob()实现对目录内容进行通配的功能,返回符合模式的包含磁盘驱动符在内的和目录名称的路径。
注意:通配和大小写区分:windows系统不区分文件名的大小写,大多数其他操作系统区分。
python通配模式中使用的通配符与shell下的通配符并不完全一致,其语法于正则表达式语法类似但不相同。
这些通配符书上介绍的不全,貌似还得自己查。
第八章完。