【python修改檔案】帶引數修改資料夾名、資料夾裡檔名、檔案內容等
阿新 • • 發佈:2018-11-11
原始碼如下:
# -*- 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) 先以讀開啟檔案,然後新建一個檔案把字串替換好之後寫到新建的檔案中,最後刪除替換前的檔案,重新命名新建的檔案
下篇說明本篇的幾個函式的含義和中文錯誤的問題。