源码如下:
# -*- coding: utf-8 -*-
#coding=utf-8
'''
脚本说明
功能:在添加新遥控时,需要手动改文件名和文件内容。现执行脚本可自动修改(码值仍需要手动修改)
使用:python ir_modify.py "原有的文件名" "需要的文件名" 例:python ir_modify.py "IR10N" "IRCHAOYE"
注意:该脚本只能放在遥控文件夹的根目录下,不能放到其他地方。
'''
import os
import os.path
import sys
import string
rootdir = "."
str = sys.argv[1]
s_old = str
s = str.lower()
s2 = sys.argv[2]
s2_new = s2.lower()
for parent,dirnames,filenames in os.walk(rootdir):
for dirname in dirnames:
if cmp(dirname,sys.argv[1]) == 0:
os.rename(dirname,sys.argv[2])
print "success!!"
path =os.path.abspath(sys.argv[2])
for parent,dirnames,filenames in os.walk(path):
for filename in filenames:
if ".h" in filename:
Hstrname = filename
for parent,dirnames,filenames in os.walk(path):
for filename in filenames:
Namestr = filename
os.chdir(path)
infile = open(filename, "r")
infile_new = open("test.h","w")
str = filename.lower()
for line in infile:
if (line.find(Hstrname) != -1):
line = line.replace(Hstrname,s2_new+"_map.h")
infile_new.write(line)
elif(line.find(s_old+"_map.c") != -1):
line = line.replace(s_old+"_map.c",s2+"_map.c")
infile_new.write(line)
elif(line.find(s_old) != -1):
line = line.replace(s_old,s2)
infile_new.write(line)
elif(line.find("__"+s_old+"_MAP_H__") != -1):
line = line.replace("__"+s_old+"_MAP_H__","__"+s2+"_MAP_H__")
infile_new.write(line)
else:
infile_new.write(line)
infile.close()
for parent,dirnames,filenames in os.walk(path):
for filename in filenames:
if filename in "test.h":
os.remove(Namestr)
os.rename(filename,Namestr)
for parent,dirnames,filenames in os.walk(path):
for filename in filenames:
if s in filename:
filename_new = filename.replace(s,s2_new)
os.chdir(path)
os.rename(filename,filename_new)
注释及知识总结:
1.python执行的时候带中文出错问题,在最开头要加上下面两端代码。
# -*- coding: utf-8 -*-
#coding=utf-8
2.参数说明:python 脚本名 参数1 参数2 :sys.argv[0]脚本名 sys.argv[1]参数1 sys.argv[2]参数2 以此类推
3.遍历目录、文件夹名等。
for parent,dirnames,filenames in os.walk(rootdir):
for dirname in dirnames:
...
...
...
...
4.获取一个文件的目录。
path =os.path.abspath(文件名)
5.进入某个路径下。
os.chdir(路径)
6.修改文件名/文件夹名。
os.rename(dirname,新名字) #修改文件夹名字
os.rename(filename,新名字) #修改文件名
7.修改文件内容,替换某个字符串。
infile = open(filename, "r")
infile_new = open(filename_new,"w")
for line in infile:
line = line.replace(需要被替换的字符串,新字符串)
infile_new.write(line)
infile.close()
infile_new.close()
...
...
os.remove(filename)
os.rename(filename_new,filename)
先以读打开文件,然后新建一个文件把字符串替换好之后写到新建的文件中,最后删除替换前的文件,重命名新建的文件
下篇说明本篇的几个函数的含义和中文错误的问题。