Python os模块中的isfile()和isdir()函数均返回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接口自动化之使用token传入到header消息头中
这篇文章主要介绍了python接口自动化之使用token传入到header消息头中问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-08-08Python eval()函数和ast.literal_eval()的区别你知道吗
这篇文章主要为大家详细介绍了Python eval()函数和ast.literal_eval()的区,文中图片代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助2022-02-02Python django框架输入汉字,数字,字符生成二维码实现详解
这篇文章主要介绍了Python django框架输入汉字,数字,字符转成二维码实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-09-09python playwright 库上传和下载操作(自动化测试 playwright)
这篇文章主要介绍了python playwright 库上传和下载操作(自动化测试 playwright ),playwright中的上传和下载比selenium的上传和下载要简便些,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下2023-05-05
最新评论