Python中关于文件路径的简单操作 [转]

1: os.listdir(path)  #path为目录

   功能相当于在path目录下执行dir命令,返回为list类型
   举例:
   print os.listdir('..')
   输出:
   [a,b,c,d]

2: os.path.walk(path,visit,arg)

   path  :是将要遍历的目录
   visit :是一个函数指针,函数圆形为:
   callback(arg,dir,fileList)
       其中arg为为传给walk的arg , dir是path下的一个目录,fileList为dir下的文件和目录组成的list
   arg:传给visit用的,对walk没有什么作用

   举例:
   def callback(arg,directory, files):
      print directory,
      print files,
      print arg
      print '--------------------'
   
   os.path.walk('.',callback, '123456')

   输出:
   . ['path0704.py', 'temp', '\xc2\xb7\xbe\xb6\xcf\xe0\xb9\xd8\xd1\xa7\xcf\xb0.txt'] 123456
   --------------------
   .\temp ['temp.h', 'temp1'] 123456
   --------------------
   .\temp\temp1 ['abc.bmp'] 123456

   如果想找到某个目录下所有文件,只需要在callback里面,在fileList中找出文件,即可

   除此之外,还有一个函数可以用那就是os.walk,看10

3:os.path.split(path)
   path 为一个路径,
  
   输出,把path分成两部分,具体看实例:
   print os.path.split("abc/de.txt")
   ('abc', 'de.txt')
   os.path.split("abc")
   ('', 'abc')
   print os.path.split("de/abc/de")
   ('de/abc', 'de')
  

4: os.path.splitext(filename)
   把文件名分成文件名称和扩展名
   os.path.splitext(abc/abcd.txt)
   ('abc/abcd', '.txt')

5:  os.path.dirname(path)
    把目录名提出来
    print os.path.dirname("abc")
          #输出为空
    print os.path.dirname('abc\def')  
    abc

6: os.path.basename(filename)
    取得主文件名
    print os.path.basename('abc')
    abc
    print os.path.basename('abc.txt')
    abc
    print os.path.basename('bcd/abc')
    abc    #这个需要注意不包括目录名称
    print os.path.basename('.')
    .


7:os.mkdir(path, [mode])
   path为目录名: 这里有个要求,只能创建一级目录
   比如path为 abc/def  则当前目录下必须存在abc 否则失败
  
8: os.makedirs(path [,mode])
   可以创建多级目录

9:os.remove(path)删除一个文件,一定是一个文件
   os.removedirs(path) 删除一个目录下所有东西
   os.rmdir(path) 删除一个目录,而且一定要空,否则os.errer

10:os.walk(path)
    遍历path,返回一个对象,他的每个部分都是一个三元组
    ('目录x',[目录x下的目录list],目录x下面的文件)

    举例:
    a =    os.walk('.')
    for i in a:
 print i
    输出:
    ('.', ['abc', 'temp'], ['path0704.py', '\xc2\xb7\xbe\xb6\xcf\xe0\xb9\xd8\xd1\xa7\xcf\xb0.txt'])
    ('.\\abc', [], ['\xd0\xc2\xbd\xa8 BMP \xcd\xbc\xcf\xf1.bmp'])
    ('.\\temp', ['temp1'], ['temp.h'])
    ('.\\temp\\temp1', [], ['abc.bmp'])


11:shutil.copy(src,dst)
    把文件src内容拷贝到文件dst中。,目标区域必须可以写,如果dst存在,则dst被覆盖

上面的函数基本够用
其它文件移动操作还请看:shutil模块:High-level file operations

原文来自:
http://blog.csdn.net/wingSys/archive/2006/07/07/889608.aspx

posted @ 2008-05-08 18:33 Jaypei 阅读(63) | 评论 (0) | 编辑
Python递归删除.svn文件夹
import os, stat;

root_dir 
= r'X:\XXX\XXX';

def walk(path):
    
for item in os.listdir(path):
        subpath 
= os.path.join(path, item);
        mode 
= os.stat(subpath)[stat.ST_MODE];
        
        
if stat.S_ISDIR(mode):
            
if item==".svn":
                
print "Clean %s ..." % subpath;
                
print "%d deleted!" % purge(subpath);
            
else:
                walk(subpath);

def purge(path):
    count 
= 0;
    
for item in os.listdir(path):
        subpath 
= os.path.join(path, item);
        mode 
= os.stat(subpath)[stat.ST_MODE];
        
if stat.S_ISDIR(mode):
            count 
+= purge(subpath);
        
else:
            os.chmod(subpath, stat.S_IREAD
|stat.S_IWRITE);
            os.unlink(subpath);
            count 
+= 1;
    os.rmdir(path);
    count 
+= 1;
    
return count;
                     
    

if __name__=='__main__':
    walk(root_dir);

借鉴以上代码转自:
http://onlypython.group.javaeye.com/group/blog/53926

import os, stat;

root_dir 
= r'X:\XX\XX';


def purge(path):
    count 
= 0;
    
for item in os.listdir(path):
        subpath 
= os.path.join(path, item);
        mode 
= os.stat(subpath)[stat.ST_MODE];
        
if stat.S_ISDIR(mode):
            count 
+= purge(subpath);
        
else:
            os.chmod(subpath, stat.S_IREAD
|stat.S_IWRITE);
            os.unlink(subpath);
            count 
+= 1;
    os.rmdir(path);
    count 
+= 1;
    
return count;



def callback(arg, directory, files):
    
if os.path.split(directory)[1]=='.svn':
        
print directory;
        
#使用os.removedirs()删不掉
        print "Folder [%s](%d files) deleted." % (directory, purge(directory));
        
print '--------------------';

    
if __name__=='__main__':
    
print 'start';
    os.path.walk(root_dir, callback, 0);
    
print 'complete.';

转载于:https://www.cnblogs.com/starspace/archive/2008/11/23/1339625.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生产上完成TopN统计流程

背景 现有城市信息和产品信息两张表在MySQL中,另外有用户点击产品日志以文本形式存在hdfs上,现要求统计每个个城市区域下点击量前三的产品名,具体信息见下方。 mysql> show tables; --------------------------------- | Tables_in_d7 …

最大公因数和最小公倍数

一丶 最大公因数求法&#xff1a;辗转相除法(也称欧几里得算法)原理: 二丶最小公倍数求法&#xff1a;两个整数的最小公倍数等于两整数之积除以最大公约数1 #include <iostream>2 3 using namespace std;4 5 //辗转相除法(欧几里得算法)6 7 int gcd(int a, int b)8 {9…

css实现div内一段文本的两端对齐

在一个固定宽度的div内&#xff0c;使得P标签内的文本两端对齐&#xff1a; text-align: justify;text-justify:inter-ideograph; <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>justify</title>…

JPA 2.1实体图–第2部分:在运行时定义延迟/急切加载

这是我关于JPA 2.1实体图的第二篇文章。 第一篇文章描述了命名实体图的用法。 这些可用于定义在编译时将使用查找或查询方法获取的实体和/或属性的图形。 动态实体图以相同的方式但以动态方式这样做。 这意味着您可以在运行时使用EntityGraph API定义实体图。 如果您错过了第一…

HDU1166-敌兵布阵

http://acm.hdu.edu.cn/showproblem.php?pid1166 线段树第一题 #include<cstdio> #define lson l,m,rt<<1 #define rson m1,r,rt<<1|1 const int maxn55555; int sum[maxn<<2]; void PushUP(int rt) {sum[rt]sum[rt<<1]sum[rt<<1|1]; } …

js对象序列化为json字符串

网上找了找将js对象序列化为json字符串的方法。结果都不近人意&#xff0c;最后自己写了一个。 注意你得自己为Date增加toString()方法。 function Serialize(obj){switch(obj.constructor){case Object:var str "{";for(var o in obj){str o ":" Seri…

QT学习三 标准对话框 QMessageBox

QMessageBox内置了几种static方法,例如 QMessageBox::question() 返回值:StandardButton 参数:QWidget * 父窗口&#xff0c;标题名&#xff0c;内容&#xff0c;按钮 YES|NO,默认选中按钮) 示例: 1 #include "mainwindow.h"2 #include <QApplication>3 #incl…

react学习笔记2

1.build文件介绍 &#xff08;1&#xff09;react.js 是react的核心库 &#xff08;2&#xff09;react-dom.js 提供与DOM相关功能 &#xff08;3&#xff09;browser.js 是将JSX语法转为javascript语法 2.组件的继续学习 注意&#xff1a;组件的第一个字母必须大写&…

Spring4:没有默认构造函数的基于CGLIB的代理类

在Spring中&#xff0c;如果要代理的目标对象的类未实现任何接口&#xff0c;则将创建基于CGLIB的代理。 在Spring 4之前&#xff0c;基于CGLIB的代理类需要默认的构造函数。 这不是CGLIB库的限制&#xff0c;而是Spring本身。 幸运的是&#xff0c;从Spring 4开始&#xff0c;…

linux里面i386 i686 i486 i586代表什么?是什么意思

URL:http://hi.baidu.com/software_one/blog/item/85c7ccedd70d6925acafd5e0.html 在linux里面&#xff0c;我们经常会遇到i386 i686 i486 I586 这些代码&#xff0c;例如查看内核版本&#xff1a; [rootlocalhost logs]# uname -a Linux localhost.localdomain 2.6.18-164.el5…

汇编语言學習

汇编语言 汇编语言(Assembly Language)是面向机器的程序设计语言.汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言”作为一门语言&#xff0c;对应于高级语言的编译器&#xff0c;需要一个“汇编器”来把汇编语言原文件汇编…

HOW-TO:带有MySQL的JEE应用程序中具有集群功能的Quartz Scheduler

Quartz Scheduler是Java世界中最流行的调度库之一。 过去&#xff0c;我主要在Spring应用程序中使用Quartz。 最近&#xff0c;我一直在研究将在云中部署的JBoss 7.1.1上运行的JEE 6应用程序中的调度。 我考虑的一种选择是Quartz Scheduler&#xff0c;因为它提供了与数据库的集…

DevStack方式安装queens版openstack

最近在学习openstack,在安装阶段就遇到了很多问题&#xff0c;特把安装过程记录如下&#xff0c;经笔者验证能正确安装openstack。 说明&#xff1a;安装后即为中文版。 2019/01/29: 安装环境&#xff1a; 宿主&#xff1a; Ubuntu 16.04 xenial Hypervisor: kvm 虚拟机&#x…

dev c++ 报错[Error] ld returned 1 exit status 的解决办法

我是个C语言的初学者&#xff0c;在使用dev c 编译器时&#xff0c;遇到一个情况&#xff1a;程序是正确的&#xff0c;能够正常的编译和运行&#xff0c;但是运行一次之后再次运行之时就出现了 报错[Error] ld returned 1 exit status&#xff0c;出现这个问题的原因是&#x…

2008年12月答疑贴

有问题请在此贴跟贴回复&#xff0c;我亦会在此贴回复。 请不要到无关的帖子中跟帖 请尽量描述清楚你的问题和需要&#xff0c;我的理解能力不是很强&#xff0c;呵呵。 请您遵守以下规则&#xff1a; 提问内容中请不要出现 感叹号&#xff0c;跪求等字样。 请尽量不要称呼我为…

androidmanifest.xml权限中文说明

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES 允 许读写访问”properties”表在checkin数据库中&#xff0c;改值可以修改上传( Allows read/write access to the “properties” t…

C语言使用scanf()函数时,%c前面和后面分别加上空格后的结果

在使用scanf()读取输入的字符时&#xff0c;当转换说明为%c时&#xff0c;"%c"、" %c"、"%c " 这三种不同的写法&#xff0c;对数据读取的结果有什么影响吗&#xff0c;答案是肯定的&#xff0c;%c 加不加空格&#xff0c;空格在前还是在后&am…

Python -- 自动导入所需要的模块

try: import xlwtexcept ImportError as e:   import os   print(e)   os.system("pip install xlwt")转载于:https://www.cnblogs.com/xlx12138/p/10551894.html

借助Apache Hadoop大规模扩展Apache Solr实时实时索引

播客的第22集是与Patrick Hunt的谈话 我们讨论了Apache Solr&#xff08;上游&#xff09;中的新工作&#xff0c;使它可以在Apache Hadoop上工作。 Solr支持将其索引和事务日志文件写入和读取到HDFS分布式文件系统。 这不使用Hadoop Map-Reduce处理Solr数据&#xff0c;而是仅…

C语言,关于getchar()清空回车符的几点经验

最近被getchar()弄的有点糊涂&#xff0c;现在基本缕清了。 拿程序举个例子&#xff1a; #include<stdio.h> int main(void) {char ch1,ch2;printf("Iam testing *********.\n");printf("So hard! ***********\n");ch1getchar();printf("$$$$$…