zoukankan      html  css  js  c++  java
  • python查找空格和中文

    前言

      图片或者文件夹下,命名不规范,有中文或者有空格。这个脚本批处理查找,并输出到 txt中方便修改,也可以扩展为

    直接脚本删除空格等。目前只用在Windows上,mac没有测试,不知道能不能行,有需要的话,自己修改一下吧。大神勿喷、、、、

    代码

    python代码如下:

    #coding=utf-8
    #2015.12.14 windows版本
    #查找所有空格名字 或者 空格  # -*- coding: utf-8 -*-
    #想要去除的空格的话,可以使用 replace(" ","")
    #取得当前路径,所有 直接双击,或者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('gbk')
        #print(ff)
        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")

    讲解

    1. os.getcwd() 

      获取当前路径。注意,该函数不需要传递参数,它返回当前的目录。需要说明的是,当前目录并不是指脚本所在的目录,而是所运行脚本的目录.

    如果你设置了python环境变量,可以直接双击运行。 第二种方法是 cd到当前目录,当然比较麻烦,你按住shift键,右击鼠标,会出现当前位置打开 cmd。如图:

    如果你还嫌麻烦。可以修改注册表,直接右键出现 上图

    2.中文字符串匹配 

    import re
    zhPattern = re.compile(u'[u4e00-u9fa5]+')

    3.if i.isspace():

      判断是不是有空格  。也可以使用其他方式。。。。

    4.python文件操作

    f = open 打开一个文档。。第二个参数是打开方式 。

    #open(路径+文件名,读写模式)
    #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式

    rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
    w     以写方式打开,
    a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
    r+     以读写模式打开
    w+     以读写模式打开 (参见 w )
    a+     以读写模式打开 (参见 a )
    rb     以二进制读模式打开
    wb     以二进制写模式打开 (参见 w )
    ab     以二进制追加模式打开 (参见 a )
    rb+    以二进制读写模式打开 (参见 r+ )
    wb+    以二进制读写模式打开 (参见 w+ )
    ab+    以二进制读写模式打开 (参见 a+ )

    注意:

    1、使用'W',文件若存在,首先要清空,然后(重新)创建,

    2、使用'a'模式 ,把所有要写入文件的数据都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,将自动被创建。



    f.read([size]) size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回""(空字串)

    file.readline() 返回一行

    file.readline([size]) 返回包含size行的列表,size 未指定则返回全部行

    for line in f: print line #通过迭代器访问

    f.write("hello ") #如果要写入字符串以外的数据,先将他转换为字符串.

    f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).

    f.seek(偏移量,[起始位置])

    用来移动文件指针

    偏移量:单位:比特,可正可负

    起始位置:0-文件头,默认值;1-当前位置;2-文件尾

    f.close() 关闭文件

    读写文件操作文件,可以对比一下其他语言的读写操作。找到共性和区别、

    总结

    对于文件夹文件的遍历,文件的查找,批量改名等等,都可以使用脚本,高效率,省时间。

    需要去做的是:不能只限于实现。还要去优化,对比,哪一种方式更快更高效。

    每天进步一点,一年后回头看,你踏出了多少步。

    转载请注明出处。

  • 相关阅读:
    C语言-if语句
    C语言-表达式
    C语言-基础
    Java for LeetCode 187 Repeated DNA Sequences
    Java for LeetCode 179 Largest Number
    Java for LeetCode 174 Dungeon Game
    Java for LeetCode 173 Binary Search Tree Iterator
    Java for LeetCode 172 Factorial Trailing Zeroes
    Java for LeetCode 171 Excel Sheet Column Number
    Java for LeetCode 169 Majority Element
  • 原文地址:https://www.cnblogs.com/zhangfeitao/p/5045802.html
Copyright © 2011-2022 走看看