• 技术文章 >后端开发 >Python教程

    Python os模块中的isfile()和isdir()函数均返回false问题解决方法

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

    #!/usr/bin/env python
    # a python script to auto backup a directory's file by Hito
    import os
    Directory=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 Hito
    import os
    Directory=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)
    
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Python中的迭代器漫谈 下一篇:Python Web框架Flask中使用七牛云存储实例
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 完全掌握Python自动操作GUI之PyAutoGUI• 一文搞懂python中Tkinter的使用• 聊聊利用python怎么读取mat文件内容(matlab数据)• Python可视化总结之matplotlib.pyplot基本参数详解• 深入了解python中的代码缩进规则
    1/1

    PHP中文网