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中的装饰器、闭包和functools的教程
Apr 02 Python
常用python编程模板汇总
Feb 12 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
Python实现字典的遍历与排序功能示例
Dec 23 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
python通过matplotlib生成复合饼图
Feb 06 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
基于python爬取有道翻译过程图解
Mar 31 Python
Python+PyQt5实现灭霸响指功能
May 25 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设计模式 Delegation(委托模式)
2011/06/26 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
Python实现Const详解
2015/01/27 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
2014年基层党支部工作总结
2014/12/04 职场文书
妈妈别哭观后感
2015/06/08 职场文书
爱国主义电影观后感
2015/06/18 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
Redis基本数据类型String常用操作命令
2022/06/01 Redis
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android