码迷,mamicode.com
首页 > 编程语言 > 详细

python操作文件案例二则

时间:2016-08-12 15:16:22      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

前言

python 对于文件及文件夹的操作。

涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等。

代码一

作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ,并打印到TXT中。

背景:在Android环境下,有些图片或者文件资源 ,如果命名不规范,会引起崩溃,如果有中文的话,直接编译不过去,

所以我们需要找出它们,(可以直接在下面脚本中修改他们的名字)

代码如下:

#coding=utf-8
# win  和 mac
#查找所有空格名字 或者 空格  # -*- coding: utf-8 -*-
#想要去除的空格的话,可以使用 replace(" ","")
#将该文件放到要查找的目录下就可以 RootDir = os.getcwd() 获取的当前路径
#取得当前路径,所有 直接双击,或者cmd 当前目录下再执行python脚本
#检查空格 和中文 
import os,sys
import os.path
import re
RootDir = os.getcwd() 
zhPattern = re.compile(u[\u4e00-\u9fa5]+)

def start(rootDir):
    for f in os.listdir(rootDir):
        sourceF = os.path.join(rootDir,f)
        if os.path.isfile(sourceF):
            a, b = os.path.splitext(f) #去除扩展名
            checkName(a)
        if os.path.isdir(sourceF):
            checkName(f)
            start(sourceF)

#文件数组
"""
注意这地方的编码格式。windows文件名字的编码格式为gbk
"""
def checkName(f):
   # ff = f.decode(‘gbk‘).encode(‘utf-8‘) 
    ff = f.decode(utf-8) # mac版
    #ff = f.decode(‘gbk‘)  #windows
    match = zhPattern.search(ff) #匹配中文
    if match:
        print (ff)
        Chinese.append(f)
    for i in f:
           if i.isspace(): #检查空格
               print f
               name.append(f)

#输出到txt
def wirte():
    f = open(RootDir+"/checkReslut.txt", "w+")
    f.write("space :\n")

    for i in range(0, len(name)):
        f.write(name[i] + "\n")

    f.write("\nChinese :\n")
    for i in range(0, len(Chinese)):
        f.write(Chinese[i] + "\n")  

    f.close()

if __name__=="__main__":
    name = []
    Chinese = []
    start(RootDir)
    wirte()
    #os.system("pause") # windows版本

代码二

作用:在文件中查找字符串 或者替换

背景:UI工程,图片资源重复,同样的,可能起了不同的名字,或者在不同模块都使用了,我们需要把他们放到一个公共的地方,可以找出来,修改。

#coding=utf-8
#在文件中查找字符串  
#可以直接替换
#mac 版
#SearchNameArry 想要查找的文件 数组
# 1.手动写 
# 2.对于想要查找的文件,可以放到一个文件夹下,然后程序直接读取文件名字

#扩展
#1.可以将结果写到TXT中
#2.直接替换

import string  
import os  
import struct  
import re  
import fileinput  
import fnmatch  

RootDir = os.getcwd()
TargetType = *.csd  #要查找的文件类型 ‘.‘(所有文件) ‘*.txt‘(所有的txt) 等等
SearchNameArry = {ggsc_b_004_1.png,ggsc_b_004_2.png,ggsc_b_004_3.png} 

def walkDir(directory, ext=*.*, topdown=True):  
    fileArray = []  
    for root, dirs, files in os.walk(directory, topdown):  
        for name in files:  
            #print name
            if fnmatch.fnmatch(name, ext):  
                fileArray.append(os.path.abspath(os.path.join(root, name)))  
    return fileArray  

#查找
def searchStr(filename, strFrom):  
    for line in fileinput.input(filename, inplace=False): # inplace 是不是替换(自己查查fileinput.input的作用)
        isFind = False        
        if re.search(strFrom, line): 
            print line 
            isFind = True

        if isFind == True:
           print os.path.basename(filename)
           #print filename     #print os.path.basename(filename)
           
#替换 未测试
def replaceInFile(filename, strFrom, strTo):  
    for line in fileinput.input(filename, inplace=False):  
        if re.search(strFrom, line):  
            line = line.replace(strFrom, strTo)  
        print line  

def main():
     for filename in walkDir(RootDir, TargetType): 
        for img in SearchNameArry:
            searchStr(filename, img) 

if __name__ == __main__:  
    main()
    

有不对的地方,请大神指正。交流加QQ776274781.

转载注明出处。

python操作文件案例二则

标签:

原文地址:http://www.cnblogs.com/zhangfeitao/p/5764731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!