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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
python文件和目录操作函数小结
Jul 11 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
python flask 多对多表查询功能
Jun 25 Python
Pycharm技巧之代码跳转该如何回退
Jul 16 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
python3+requests接口自动化session操作方法
Oct 13 Python
Python 多维List创建的问题小结
Jan 18 Python
Python 定义只读属性的实现方式
Mar 05 Python
python适合做数据挖掘吗
Jun 16 Python
python中编写函数并调用的知识点总结
Jan 13 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判断linux下程序问题实例
2015/07/09 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
javascript入门基础之私有变量
2010/02/23 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
简单了解python代码优化小技巧
2019/07/08 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
python实现移动木板小游戏
2020/10/09 Python
Python 里最强的地图绘制神器
2021/03/01 Python
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
.net开发工程师面试题
2014/02/25 面试题
人力资源管理专业学生自我评价
2013/11/20 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
python内置模块之上下文管理contextlib
2022/06/14 Python
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技