Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015-02-04 09:43
1336 查看
今天在写一个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 os模块中的isfile()和isdir()函数均返回false问题解决方法
- Python模块函数:os.listdir 打印Win7目录中的文件-中文乱码问题
- Python安装模块出现问题UnicodeDecodeError的解决方法
- python安装cx_Oracle模块常见问题与解决方法
- Python 读Dict数据的方法,解决key 不在dict的问题,get()函数,setdefault()函数
- Python使用urllib模块的urlopen超时问题解决方法
- python基础:os模块中关于文件/目录常用的函数使用方法
- python中cx_Oracle模块安装遇到的问题与解决方法
- 正试图在os加载程序锁内执行托管代码。不要尝试在DllMain或映像初始化函数内运行托管代码 问题解决方法
- Python安装MySQLDb模块的问题及解决方法
- Python安装MySQLDb模块的问题及解决方法
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。问题的解决方法!
- 关于python下构建c模块出现error: Unable to find vcvarsall.bat问题的解决方法
- python中cx_Oracle模块安装遇到的问题与解决方法
- python中os.path.isfile()和os.path.isdir()均返回false的问题
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。问题的解决方法!
- Linux搭建python环境中cx_Oracle模块安装遇到的问题与解决方法
- [ASP.NET] 自定义控件的 onkeypress 在 javascript 函数返回false 依旧继续执行的解决方法(教训)
- os、os.path 模块中关于文件、目录常用的函数使用方法(python)