前言

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操作文件案例二则的更多相关文章

  1. Python操作文件、文件夹、字符串

    Python 字符串操作 去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sSt ...

  2. Python操作文件和目录

    Python操作文件和目录 读写文件比较简单,有一点特别注意就好了 windows下Python默认打开的文件以gbk解码,而一般我们的文件是utf-8编码的,所以如果文本含有中文,就会出现异常或者乱 ...

  3. python操作文件练习,配置haproxy

    在使用python操作文件的时候,特别是对于网络设备,通常操作配置文件,会简化配置量,配置文件加载到内存中,运行时使用的是内存中的配置,内存中配置修改后立即生效,如果不将配置内容保存到硬盘中,则下次重 ...

  4. Python操作文件-20181121

    Python操作文件 Python操作文件和其他语言一样,操作的过程无非是先定位找到文件.打开文件,然后对文件进行操作,操作完成后关闭文件即可. 文件操作方式:对文件进行操作,主要就是读.写的方式,p ...

  5. 使用python操作文件实现购物车程序

    使用python操作文件实现购物车程序 题目要求如下: 实现思路 始终维护一张字典,该字典里保存有用户账号密码,购物车记录等信息.在程序开始的时候读进来,程序结束的时候写回文件里去.在登录注册的部分, ...

  6. 用Python操作文件

    用Python操作文件 用word操作一个文件的流程如下: 1.找到文件,双击打开. 2.读或修改. 3.保存&关闭. 用Python操作文件也差不多: f=open(filename) # ...

  7. Python操作MySQL案例

    最近都在学习Python代码,希望学会Python后,能给我带来更高的工作效率,所以每天坚持学习和拷代码,下面是一个Python操作MySQL的一个实例,该实例可以让更多的人更好了解MySQLdb模块 ...

  8. open -python操作文件

    一打开文件 二操作文件 三关闭文件 open(文件,模式,编码),打开文件----->0101010(以二进制的方式打开)------>编码(open默认utf-8编码)------> ...

  9. Python操作文件文档

    需要帮老师将44G的图书分类一下,人工当然累死了.所以用Python大法处理一下. 思路是读取文件目录下的书名,然后去百度百科查分类,如果还没有就去豆瓣,当当查.哪一个先找到其余的就不用找了.如果没有 ...

随机推荐

  1. MyBatis学习总结(六)——调用存储过程(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013518.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存 ...

  2. [Maven]初次实践

    都说Maven好,以前一直用ant,这次体验一下. 开始之前,maven给我的印象有2个,一是库依赖管理做得比较好,二是规范了构建编译过程,说白了就是什么目录都规定好了. 好开始安装,解压缩,设置m2 ...

  3. Java 枚举7常见种用法

    DK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便. 用法一:常量 在JDK1.5 之前,我们定义常量都是:  ...

  4. GDB调试32位汇编堆栈分析

    GDB调试32位汇编堆栈分析 测试源代码 #include <stdio.h> int g(int x){ return x+5; } int f(int x){ return g(x)+ ...

  5. boos直聘扫码直接登陆js代码

    <script type="text/javascript"> $(function () { function show_ts() { var Tishi = $(& ...

  6. Qt动画效果展示(文艺IT男)

    该程序使用应用程序单窗口,主窗口继承于QMainWindow:主窗口有5个QToolButton部件(窗口底部的四个以及窗口中央的一个),单击窗口底部的QToolButton部件可以使窗口中央的那个Q ...

  7. WireShar使用笔记

    1.下载wiresharp  官网下载 2.安装 安装后直接支持中文 很人性化哦 注意:一定要安装WinPcap 不然无法使用 3.

  8. Java局部变量

    局部变量是在方法被执行时创建,在方法执行结束时被销毁.局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误. 在相互不嵌套的作用域中可以同时声明两个名称,类型相同的局部变量, public ...

  9. 【leedcode】longest-substring-without-repeating-characters

    Given a string, find the length of the longest substring without repeating characters. Examples: Giv ...

  10. android获取textview的行数

    最近项目需求,需要获取Textview的行数,通过行数与TextView的maxLines进行比较来确定是否显示TextView下方的展开按钮是否显示,废话少说直接上代码,mTextView.getL ...