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


Posted in Python onFebruary 04, 2015

今天在写一个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实现颜色空间转换程序(Tkinter)
Dec 31 Python
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
python定向爬取淘宝商品价格
Feb 27 Python
flask入门之文件上传与邮件发送示例
Jul 18 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 Python
python实现最速下降法
Mar 24 Python
python中get和post有什么区别
Jun 19 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
Python&Matlab实现樱花的绘制
Apr 07 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 #Python
Python、Javascript中的闭包比较
Feb 04 #Python
线程和进程的区别及Python代码实例
Feb 04 #Python
Python中使用PIPE操作Linux管道
Feb 04 #Python
Python实现在Linux系统下更改当前进程运行用户
Feb 04 #Python
使用Python编写Linux系统守护进程实例
Feb 03 #Python
Python中使用select模块实现非阻塞的IO
Feb 03 #Python
You might like
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
php 获取本地IP代码
2013/06/23 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
PHP链表操作简单示例
2016/10/15 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
python实现定时同步本机与北京时间的方法
2015/03/24 Python
python安装以及IDE的配置教程
2015/04/29 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
python判断设备是否联网的方法
2018/06/29 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
介绍Java的内部类
2012/10/27 面试题
医学生自荐信
2013/12/03 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
高级编程求职信模板
2014/02/16 职场文书
创建文明城市标语
2014/06/16 职场文书
力学专业求职信
2014/07/23 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python