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安装以及IDE的配置教程
Apr 29 Python
Python下线程之间的共享和释放示例
May 04 Python
Python中数字以及算数运算符的相关使用
Oct 12 Python
python字符串过滤性能比较5种方法
Jun 22 Python
Python实现字典去除重复的方法示例
Jul 31 Python
Python对列表中的各项进行关联详解
Aug 15 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
Python 获取div标签中的文字实例
Dec 20 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
用于ETL的Python数据转换工具详解
Jul 21 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php中explode函数用法分析
2014/11/15 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python发送邮件实例分享
2017/07/28 Python
python实现机器学习之多元线性回归
2018/09/06 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python实现动态数组的示例代码
2019/07/15 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
python help函数实例用法
2020/12/06 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
毕业生自我推荐
2013/11/04 职场文书
财务工作个人求职的自我评价
2013/12/19 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
消防安全承诺书
2014/05/22 职场文书
求职信标题怎么写
2014/05/26 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
职工年度考核评语
2014/12/31 职场文书
北大自主招生自荐信
2015/03/04 职场文书
python 实现的截屏工具
2021/05/08 Python