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配置文件解析模块ConfigParser使用实例
Apr 13 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
使用Python搭建虚拟环境的配置方法
Feb 28 Python
python3.4爬虫demo
Jan 22 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 Python
Python代码需要缩进吗
Jul 01 Python
python与js主要区别点总结
Sep 13 Python
python中绕过反爬虫的方法总结
Nov 25 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 Python
python lambda的使用详解
Feb 26 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
JS的反射问题
2010/04/07 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
javascript 闭包详解
2015/02/15 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
python删除某个字符
2018/03/19 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Python如何实现的二分查找算法
2020/05/27 Python
Python装饰器结合递归原理解析
2020/07/02 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
酒店行政人事部经理职务说明书
2014/02/26 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
2014年统战工作总结
2014/12/09 职场文书
实习科室评语
2015/01/04 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python