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的Flask框架中@app.route的用法教程
Mar 31 Python
Python中关于使用模块的基础知识
May 24 Python
Python可变参数函数用法实例
Jul 07 Python
浅谈Python的垃圾回收机制
Dec 17 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
Django urls.py重构及参数传递详解
Jul 23 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 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调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
php微信开发之关注事件
2018/06/14 PHP
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
webpack打包js的方法
2018/03/12 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
vc6编写python扩展的方法分享
2014/01/17 Python
python实现sublime3的less编译插件示例
2014/04/27 Python
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
Python get获取页面cookie代码实例
2018/09/12 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
python爬取天气数据的实例详解
2020/11/20 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
学生周末长期请假条
2014/02/15 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
三方协议书范本
2014/04/22 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
就业协议书样本
2014/08/20 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
HAM-2000摩机图
2021/04/22 无线电
Python利用capstone实现反汇编
2022/04/06 Python