• python操作文件案例二则


    前言

    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 :
    ")
    
        for i in range(0, len(name)):
            f.write(name[i] + "
    ")
    
        f.write("
    Chinese :
    ")
        for i in range(0, len(Chinese)):
            f.write(Chinese[i] + "
    ")  
    
        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.

    转载注明出处。

  • 相关阅读:
    安装 OSS-FTP 时出现 ImportError: No module named gtk的解决
    Two Sum III
    两线程交叉打印奇偶数
    /dev/kvm device: permission denied Deepin Ubuntu AndroidStudio
    05webpack-webpack-dev-server时时跟新-第2种方式
    04webpack--webpack-dev-server 时时跟新
    03webpack--输入webpack--自动打包
    02-webpack的基本配置-运行webpack
    01-day-什么是webpack
    学习51cto中美团中的小知识点--组件实现按需求加载
  • 原文地址:https://www.cnblogs.com/zhangfeitao/p/5764731.html
Copyright © 2020-2023  润新知