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 :\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操作文件案例二则的更多相关文章
- Python操作文件、文件夹、字符串
Python 字符串操作 去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sSt ...
- Python操作文件和目录
Python操作文件和目录 读写文件比较简单,有一点特别注意就好了 windows下Python默认打开的文件以gbk解码,而一般我们的文件是utf-8编码的,所以如果文本含有中文,就会出现异常或者乱 ...
- python操作文件练习,配置haproxy
在使用python操作文件的时候,特别是对于网络设备,通常操作配置文件,会简化配置量,配置文件加载到内存中,运行时使用的是内存中的配置,内存中配置修改后立即生效,如果不将配置内容保存到硬盘中,则下次重 ...
- Python操作文件-20181121
Python操作文件 Python操作文件和其他语言一样,操作的过程无非是先定位找到文件.打开文件,然后对文件进行操作,操作完成后关闭文件即可. 文件操作方式:对文件进行操作,主要就是读.写的方式,p ...
- 使用python操作文件实现购物车程序
使用python操作文件实现购物车程序 题目要求如下: 实现思路 始终维护一张字典,该字典里保存有用户账号密码,购物车记录等信息.在程序开始的时候读进来,程序结束的时候写回文件里去.在登录注册的部分, ...
- 用Python操作文件
用Python操作文件 用word操作一个文件的流程如下: 1.找到文件,双击打开. 2.读或修改. 3.保存&关闭. 用Python操作文件也差不多: f=open(filename) # ...
- Python操作MySQL案例
最近都在学习Python代码,希望学会Python后,能给我带来更高的工作效率,所以每天坚持学习和拷代码,下面是一个Python操作MySQL的一个实例,该实例可以让更多的人更好了解MySQLdb模块 ...
- open -python操作文件
一打开文件 二操作文件 三关闭文件 open(文件,模式,编码),打开文件----->0101010(以二进制的方式打开)------>编码(open默认utf-8编码)------> ...
- Python操作文件文档
需要帮老师将44G的图书分类一下,人工当然累死了.所以用Python大法处理一下. 思路是读取文件目录下的书名,然后去百度百科查分类,如果还没有就去豆瓣,当当查.哪一个先找到其余的就不用找了.如果没有 ...
随机推荐
- iOS Device Specifications Grid
- MVC5 视图 不显示 Styles.Render Scripts.Render 问题解决
第一步:安装 WebGrease 使用 nuget 安装 WebGrease 安装依赖 第二步:修改配置文件 <configSections> <!-- For more infor ...
- 数据库 定义 bit 类型 (true=1,false=0)
当Sql Server数据库定义 数据 为 bit 类型时, 编写代码时 要用 true or false 赋值. 例如: OffTheShelf 定义类型为 bit 后台赋值时 OffTheSh ...
- gvim初学命令记录
一.vim进入和退出(在正常模式下进行)若不能保证是否处于正常模式,先按下ESC键不保存退出 :q!(冒号也是键的)保存退出 :wq二.移动 k(上)h(左) l(右) j(下)三.删除(可类似于剪切 ...
- iOS:基于CoreText的排版引擎
一.CoreText的简介 CoreText是用于处理文字和字体的底层技术.它直接和Core Graphics(又被称为Quartz)打交道.Quartz是一个2D图形渲染引擎,能够处理OSX和iOS ...
- find命令的拾遗
find -maxdepth 1 -regextype posix-extended -type f -regex "\./${name}[-\.].*\.(gz|bz2|tgz|zip|t ...
- 百度富文本编辑器UEDITOR
前言 http://jingyan.baidu.com/article/a948d65108d7fa0a2dcd2e8d.html 配置<a>测试啊</a>.net mvc4项 ...
- 解决Windows下网络原因Composer安装失败问题
由于Composer镜像都在国外,所以直接在官网下载Windows Installer后安装很多情况下是无法成功安装的. 解决办法: 1,将php添加到系统环境变量,并开启openssl扩展. 2,点 ...
- ios - block循环引用Demo示例
当实例变量中有了block属性,并且用copy来修饰,但是当调用block中的代码的时候,如果block中运用了self.属性的时候回造成循环引用. // // ViewController.h // ...
- Linux命令集合
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...