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 :\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")

講解

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\n") #如果要寫入字符串以外的數據,先將他轉換為字符串.

f.tell() 返回一個整數,表示當前文件指針的位置(就是到文件頭的比特數).

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

用來移動文件指針

偏移量:單位:比特,可正可負

起始位置:0-文件頭,默認值;1-當前位置;2-文件尾

f.close() 關閉文件

讀寫文件操作文件,可以對比一下其他語言的讀寫操作。找到共性和區別、

總結

對於文件夾文件的遍歷,文件的查找,批量改名等等,都可以使用腳本,高效率,省時間。

需要去做的是:不能只限於實現。還要去優化,對比,哪一種方式更快更高效。

每天進步一點,一年后回頭看,你踏出了多少步。

轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM