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() 关闭文件

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

    总结

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

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

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

    转载请注明出处。

  • 相关阅读:
    使用Python创建简单的HTTP和FTP服务
    Xps实现文档显示、套打功能
    时间测试
    微信公众账号 开发教程
    竞赛快速及常用(后续更新)
    第十届蓝桥杯JavaC组省赛真题
    第十届蓝桥杯JavaC组省赛真题
    第十届蓝桥杯JavaC组省赛真题
    C# Winform学习(六)
    C# Winform学习(六)
  • 原文地址:https://www.cnblogs.com/zhangfeitao/p/5045802.html
Copyright © 2011-2022 走看看