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轻松实现代码编码格式转换
Mar 26 Python
将Python代码嵌入C++程序进行编写的实例
Jul 31 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
在python中bool函数的取值方法
Nov 01 Python
pandas 透视表中文字段排序方法
Nov 16 Python
python中threading开启关闭线程操作
May 02 Python
Python内置异常类型全面汇总
May 28 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
Jun 15 Python
如何通过python计算圆周率PI
Nov 11 Python
python3爬虫中引用Queue的实例讲解
Nov 24 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/11/26 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
js实现选项卡效果
2020/03/07 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
如何在Python中编写并发程序
2016/02/27 Python
Python三级菜单的实例
2017/09/13 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
Python Django 命名空间模式的实现
2019/08/09 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
python解释器spython使用及原理解析
2019/08/24 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
python统计字符的个数代码实例
2020/02/07 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
2020/06/06 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
转党组织关系介绍信
2014/01/08 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
雷锋观后感
2015/06/10 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python