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 相关文章推荐
用matplotlib画等高线图详解
Dec 14 Python
python实现决策树
Dec 21 Python
python+opencv实现动态物体追踪
Jan 09 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
Django实现分页功能
Jul 02 Python
kafka-python批量发送数据的实例
Dec 27 Python
python3+selenium自动化测试框架详解
Mar 17 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 Python
python把一个字符串切开的实例方法
Sep 27 Python
Python中Yield的基本用法
Oct 18 Python
python爬取招聘要求等信息实例
Nov 20 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 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与javascript对多项选择的处理
2006/10/09 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
玩转方法:call和apply
2014/05/08 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
JS之相等操作符详解
2016/09/13 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
Weblogic和WebSphere不同特点
2012/05/09 面试题
市场营销专业个人自荐信格式
2013/09/21 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
食品业务员岗位职责
2014/03/18 职场文书
银行稽核岗位职责
2015/04/13 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
Python简易开发之制作计算器
2022/04/28 Python
Nginx跨域问题解析与解决
2022/08/05 Servers