python 文件夹与文件操作实例

python 文件夹与文件操作实例

正则表达式来清理文件夹

import os
import sys
import re
import shutil

def cleanup(dir, regrex, num):
  if not os.path.exists(dir) and not os.path.isdir(dir) :
    print 'path %s is not existed or is not a directory' %dir
    return false

  subfolderdict = {}
  for subi in os.listdir(dir):
    sf = os.path.join(dir,subi)
    if os.path.isdir(sf) and not re.match(regrex, subi) == none:
      sftime = os.path.getctime(sf)
      subfolderdict[sftime] = sf
    else:
      continue

  subfolders = subfolderdict.keys()
  if len(subfolders) == 0 : return true
     
  subfolders.sort(reverse=true)
  n = int(num)
  if len(subfolders) >= n :
    subfolders = subfolders[n:]
  else: return true

  if len(subfolders) == 0 : return true
 
  for sftime in subfolders:
    sf = subfolderdict[sftime]
    #shutil.rmtree(sf)
    print '%s is removed' % sf

  return true

def usage():
  usage = 'n
  function:n
    clean up subfolders in (dir), as a result :n
    just keep the subfolders which are matched with (regrex), n
    and the number of the subfoler cannot more then (num).n
  usage:n
    python %s dir regrex numn
  ' %sys.argv[0]
  print usage

if __name__ == '__main__':
  if len(sys.argv) == 4 :
    cleanup(sys.argv[1],sys.argv[2],sys.argv[3])
  else:
    usage()

python subst删除文件夹

代码:

import os
import sys
import shutil
import subprocess
 
def runcommand(cmd):
  return subprocess.call(cmd)

def substdriveforpath(drive, path):
  substcmd = "subst" + " " + drive + " " + path
  return runcommand(substcmd)
 
def unsubstdriveforpath(drive):
  unsubstcmd = "subst" + " " +drive + " " + "/d"
  runcommand(unsubstcmd)
 
def autosubst(path):
  result = false
 
  useddrive = ""
  for drive in "zyxwvutsrqponmlkjihgfedcba":
    fulldrive = drive + ":"
    returncode = substdriveforpath(fulldrive,path)
    if(returncode == 0):
      useddrive = fulldrive
      break
  if(not useddrive == ""):
    result = true
   
  return result, useddrive

def rmdirwithsubst(dir, subst = true):

  if not os.path.exists(dir) and not os.path.isdir(dir) :
        print 'path %s is not existed or is not a directory' %dir
        return false
 
  if subst:
    parent, curdir = os.path.split(dir)
    re, d = autosubst(parent)
    if re == false :
      print  'subst failed'
      return false
    dir = d + '' + curdir
 
  shutil.rmtree(dir)
  unsubstdriveforpath(d)
   
  return true
 
def usage():
  usage = '
  when the dirctory cannot be removed in which some files path are too long.n
  usage: python %s folder1 [folder2 ...]n' %sys.argv[0]
  print usage

if __name__ == '__main__':
  if len(sys.argv) < 2 : usage()
  for folder in sys.argv[1:]:
    rmdirwithsubst(folder)

文件复制

1. 配置文件 (mojo.ini)

[main]
skin_path=e:accentrix.srcsunridersrcwebdataskins
mojo_templates=sunriderreplicator_skin_1,sunriderreplicator_skin_2,sunriderreplicator_skin_3,sunriderreplicator_skin_4
file_path=layout.master,images1.png

[target]
path=z:dataskins

--在这里解释一下:

[main] 源路径的配置

skin_path:这个是mojo皮肤的目录位置

mojo_templates:模板目录用逗号分开表示多个,(其实也可以用其它的目录)

file_path:模板下面对应的文件,用逗号分开,也可以包含子目录(eg: imagesimagek.jpg)

[target] 要复制到的位置

path:就是mojo皮肤所在的位置,参考main节点下面的 skin_path就可以了

--以下就是py的代码了

import os;
import configparser;
import shutil;
def mojoupdate():
    print "application will start to update"
    path=".mojo.ini"
    main="main"
    config=configparser.configparser();
    config.read(path)
    skinpath=config.get(main,"skin_path")
   
    for _templatedirectory in config.get(main,"mojo_templates").split(","):
        sourcefolderpath=skinpath+""+_templatedirectory
        for _file in config.get(main,"file_path").split(","):
            dest_path=config.get("target","path")+""+_templatedirectory
            dest=dest_path+""+_file
            fullpath=sourcefolderpath+ "" +_file
            print fullpath
            if os.path.exists(fullpath):
                print "copy file "+fullpath+" to " + dest
                createfolder(os.path.split(dest)[0])
                shutil.copyfile(fullpath,dest)
            else:
                print fullpath +" is not exists"
    print "copy completed"
#-----------------------------------------------------

#recursion create folder
def createfolder(path):
    if os.path.exists(path)==false:       
        createfolder(os.path.split(path)[0])
        os.mkdir(path)

-------------------------

运行mojoupdate()这个方法即可

 

时间: 2024-12-02 05:37:21

python 文件夹与文件操作实例的相关文章

Python文件夹与文件的操作实现代码_python

有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置. 举个简单例子,我们将abc.py放入A文件夹.并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A文件夹内生成一个新文件夹.且文件夹的名字根据时间自动生成. import os import time folder =

Python文件夹与文件的相关操作(推荐)_python

最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置. 举个简单例子,我们将abc.py放入A文件夹.并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A

Python文件夹与文件的操作

转自该博客内容:http://www.cnblogs.com/yuxc/archive/2011/08/01/2124012.html ,放在此处用于本人记录 最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行

Python批量重命名同一文件夹下文件的方法

  本文实例讲述了Python批量重命名同一文件夹下文件的方法.分享给大家供大家参考.具体分析如下: 朋友发了一个文件夹过来,里面的图片都以 .tmp 为后缀. 手工修改的话工作量太大.故写了一个 Python 脚本进行批量重命名. 对 Python 的标准库不熟,只能边查资料,或者 help() 边写代码. 三行代码就可以解决这一问题. 不过没有捕获异常.不能迭代同一目录下的所有文件. 代码如下: ? 1 2 3 4 import os for file in os.listdir(".&qu

asp.net C#文件操作(追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件)

asp教程.net c#文件操作(追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件) c#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下 面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内容detele.读取文本文件.获取文件列表.读取日志文件.写入日志文件.创建html 文件.createdirectory方法的使用 c#追加文件 streamwriter sw = file.appendtext(server.mappath(".")+

PHP遍历文件夹与文件类及处理类用法实例

  本文实例讲述了PHP遍历文件夹与文件类及处理类用法,非常具有实用价值.分享给大家供大家参考.具体方法如下: FindFile.class.php类文件用于遍历目录文件,具体代码如下: <?php /** 遍历文件夹及文件类 * Date: 2013-03-21 * Author: fdipzone * Ver: 1.0 */ class FindFile{ public $files = array(); // 存储遍历的文件 protected $maxdepth; // 搜寻深度,0表示

Asp.net对文件夹和文件的操作类

asp.net using System;using System.IO;using System.Web; namespace SEC{    /**//// <summary>    /// 对文件和文件夹的操作类    /// </summary>    public class FileControl    {        public FileControl()        {                    }        /**//// <summa

操作文件夹或文件的权限的命令行工具Icacls

  在Windows Vista和Windows Server 2003 Service Pack 2中,微软提供了一个新的命令行工具Icacls,你可以使用它来查看.设置.保存并恢复文件夹或文件的权限.它在功能上比以往的Cacls更为强大. ICACLS name /save aclfile [/T] [/C] [/L] [/Q] 将所有匹配名称的 ACL 存储到 aclfile 中以便将来用于 /restore. ICACLS directory [/substitute SidOld Si

文件(文件夹)删除拷贝操作类

文件(文件夹)相关操作.以下各种讨论基于Windows+VC7.0开发环境. 实现文件(文件夹)操作的方式和函数多种多样,在这里我们只是很浅显讨论其中的一两中方法的应用.如果你想了解更多的请参考你编译系统的的帮助文件.也可以和我讨论: MSN:Ugg_xchj@hotmail.com 为了更好的对文件(文件夹)进行操作,我们先讲解一些基本知识.最后我们将实现一个基于我们自己方法的文件(文件夹)create,copy,delete等操作的类.,如果你对文件(文件夹)操作已经非常熟悉,可以跳过前边部