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

 更新时间:2015年02月04日 09:43:48   投稿:junjie  
这篇文章主要介绍了Python os模块中的isfile()和isdir()函数均返回false问题解决方法,返回false的原因是路径使用了相对路径,使用绝对路径就可以解决这个问题,需要的朋友可以参考下

今天在写一个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)

相关文章

  • python定时检测无响应进程并重启的实例代码

    python定时检测无响应进程并重启的实例代码

    这篇文章主要介绍了python定时检测无响应进程并重启的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • python接口自动化之使用token传入到header消息头中

    python接口自动化之使用token传入到header消息头中

    这篇文章主要介绍了python接口自动化之使用token传入到header消息头中问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • python中__init__方法知识点详解

    python中__init__方法知识点详解

    Python中常会看到在很多类中都有一个__init__函数,该函数有什么作用,又该如何使用呢,下面这篇文章主要给大家介绍了关于python中__init__知识点的相关资料,需要的朋友可以参考下
    2023-04-04
  • Pygame Rect区域位置的使用(图文)

    Pygame Rect区域位置的使用(图文)

    在 Pygame 中我们使用 Rect() 方法来创建一个指定位置,大小的矩形区域。本文主要就来介绍一下如何使用,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • Python eval()函数和ast.literal_eval()的区别你知道吗

    Python eval()函数和ast.literal_eval()的区别你知道吗

    这篇文章主要为大家详细介绍了Python eval()函数和ast.literal_eval()的区,文中图片代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 简述Python中的面向对象编程的概念

    简述Python中的面向对象编程的概念

    这篇文章主要介绍了简述Python中的面向对象编程的概念,面向对象编程是Python的重要特性,需要的朋友可以参考下
    2015-04-04
  • 关于pip的安装,更新,卸载模块以及使用方法(详解)

    关于pip的安装,更新,卸载模块以及使用方法(详解)

    下面小编就为大家带来一篇关于pip的安装,更新,卸载模块以及使用方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • python利用requests库进行接口测试的方法详解

    python利用requests库进行接口测试的方法详解

    在python的标准库中,虽然提供了urllib,utllib2,httplib,但是做接口测试,requests真心好,正如官方说的,“让HTTP服务人类”,一言以蔽之,说明一切,这篇文章主要给大家介绍了关于python利用requests库进行接口测试的相关资料,需要的朋友可以参考下
    2018-07-07
  • Python django框架输入汉字,数字,字符生成二维码实现详解

    Python django框架输入汉字,数字,字符生成二维码实现详解

    这篇文章主要介绍了Python django框架输入汉字,数字,字符转成二维码实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • python playwright 库上传和下载操作(自动化测试 playwright)

    python playwright 库上传和下载操作(自动化测试 playwright)

    这篇文章主要介绍了python playwright 库上传和下载操作(自动化测试 playwright ),playwright中的上传和下载比selenium的上传和下载要简便些,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05

最新评论