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最基本的数据类型以及对元组的介绍
Apr 14 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
python中的字符串内部换行方法
Jul 19 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
使用Scrapy爬取动态数据
Oct 21 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
Python利用heapq实现一个优先级队列的方法
Feb 03 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
Feb 28 Python
详解Python 解压缩文件
Apr 09 Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 Python
Python pandas之求和运算和非空值个数统计
Aug 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
使用angular写一个hello world
2015/01/23 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python获取本机所有IP地址的方法
2018/12/26 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
企业晚会策划方案
2014/05/29 职场文书
社团活动总结格式
2014/08/29 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
vue router 动态路由清除方式
2022/05/25 Vue.js
Django框架模板用法详解
2022/06/10 Python