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单元测试unittest实例详解
May 11 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
对python的输出和输出格式详解
Dec 08 Python
Python闭包思想与用法浅析
Dec 27 Python
python实现AES加密与解密
Mar 28 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
python实现126邮箱发送邮件
May 20 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
Django框架请求生命周期实现原理
Nov 13 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
Dec 21 Python
python 批量压缩图片的脚本
Jun 02 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伪造referer实例代码
2008/09/20 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
Python提取网页中超链接的方法
2016/09/18 Python
简单了解python模块概念
2018/01/11 Python
使用TensorFlow实现SVM
2018/09/06 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
房务中心文员岗位职责
2014/04/16 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
浅谈python中的多态
2021/06/15 Python