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通过websocket与js客户端通信示例分析
Jun 25 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
Python实现的生成格雷码功能示例
Jan 24 Python
解析Python的缩进规则的使用
Jan 16 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
Python2与Python3的区别点整理
Dec 12 Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 Python
python模拟实现分发扑克牌
Apr 22 Python
Python列表如何更新值
May 27 Python
python openCV实现摄像头获取人脸图片
Aug 20 Python
Python Merge函数原理及用法解析
Sep 16 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异常处理使用示例
2014/02/25 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
JS 实现导航栏悬停效果(续2)
2013/09/24 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
python网络编程之文件下载实例分析
2015/05/20 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
优秀教师事迹材料
2014/12/15 职场文书
护士年终考核评语
2014/12/31 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python