Python os模块中的isfile[]和isdir[]函数均返回false问题

来源:未知 浏览 121次 时间 2021-06-02 01:00

今天在写一个linux下自动备份指定目录下的所有目录的脚本时遇到了一个问题由于我是需要备份目录晋中SEO由于我是需要备份目录所以需要判断扫描的文件是否为目录当我用os.path.isdir()来判断的时候发现所有文件均返回false刚开始以为是系统兼容性问题进一步测试发现用os.path.isfile()这些文件还是返回false这肯定就是程序写的有问题了,代码如下:

#!/usr/bin/env python# a python script to auto backup a directory's file by Hitoimport osDirectory=raw_input("Please enter directory you want to backup:") dirs=os.listdir(Directory)for filename in dirs: if os.path.isdir(filename): os.system("tar czvf "+filename+".tar.gz "+filename)

经过仔细排查在上面的for/in循环中filename实际上只是一个文件名。测试发现当我使用os.path.isdir(目录的绝对路径)的时候返回的才是true也就是说python的isdir()并不像php的is_dir()那样可以使用当前工作目录的相对路径那么这里怎么样去改进这个备份文件呢?幸好python提供了一个os.path.join()函数自动来把需要的路径加到一块而不用担心手动把路径字符串连接起来时产生多余的”/”的问题那么这个备份脚本可以这样写:

#!/usr/bin/env python# a python script to auto backup a directory's file by Hitoimport osDirectory=raw_input("Please enter directory you want to backup:") dirs=os.listdir(Directory)for filename in dirs: fulldirfile=os.path.join(Directory,filename) if os.path.isdir(fulldirfile): os.system("tar czvf "+fulldirfile+".tar.gz "+fulldirfile)

标签: 文件路径目录filename