【python修改文件】带参数修改文件夹名、文件夹里文件名、文件内容等

源码如下:

# -*- 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)
先以读打开文件,然后新建一个文件把字符串替换好之后写到新建的文件中,最后删除替换前的文件,重命名新建的文件

下篇说明本篇的几个函数的含义和中文错误的问题。

猜你喜欢

转载自blog.csdn.net/Beyond_1024/article/details/82898468