python指令碼為已建立的ios .h和.m檔案新增費程式碼
# -*- coding: utf-8 -*-
import random
import os
def getArray():
first = "abcdefghijklmnopqrstuvwxyz"
second = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
third = "1234567890"
number = "345"
index = 0
for i in range(500):
final=(random.choice(first))
index = random.randint(3, 5)
for i in
final+=(random.choice(first))
final += (random.choice(second))
for i in range(index):
final+=(random.choice(third))
array.append(final)
classArray = ['NSString','UILabel','NSDictionary','NSData','UIScrollView','UIView','UITextView','UITableView',
viewArray = ['UILabel','UIScrollView','UIView','UITextView','UITableView','UIImageView']#.m檔案裡建立的元素的型別從這個數組裡隨機選
array = []
getArray()#用於生成.h和.m檔案中將要用的屬性名
array = list(set(array))
#.h檔案新增廢程式碼
def HFileAddMj(file_path,old_str1,old_str2,old_str3,old_str4,old_str5):
file_data = ""
Ropen=open(file_path,'r')
for line in Ropen:
nameStr = random.choice(array)
className = random.choice(classArray)
if old_str1 in line:
line += '\n\n/*********mjbwenjian**********/\[email protected](nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)#防止建立的屬性名重複(建立一個從陣列中刪除一個)
elif old_str2 in line:
line += '\n\n/*********mjbwenjian**********/\[email protected](nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
elif old_str3 in line:
line += '\n\n/*********mjbwenjian**********/\[email protected](nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
elif old_str4 in line:
line += '\n\n/*********mjbwenjian**********/\[email protected](nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
elif old_str5 in line:
line += '\n\n/*********mjbwenjian**********/\[email protected](nonatomic,strong)'+className +' * '+nameStr+';\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
else:
file_data += line
Ropen.close()
Wopen=open(file_path,'w')
Wopen.write(file_data)
Wopen.close()
print(file_data)
#.m檔案新增廢程式碼
def MFileAddMj(file_path,old_str1,old_str2,old_str3,old_str4,old_str5,old_str6,old_str7):
file_data = ""
Ropen=open(file_path,'r')#讀取檔案
for line in Ropen:
nameStr = random.choice(array)
className = random.choice(viewArray)
if old_str1 in line:#如果.h檔案中的某一行裡包含old_str,則往這一行新增一下語句
line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+nameStr+'.userInteractionEnabled = YES;\n'+nameStr+'.layer.masksToBounds = YES;'+'\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)#防止建立的元素名重複(建立一個從陣列中刪除一個)
elif old_str2 in line:
line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.layer.borderWidth = 1;'+nameStr+'.clipsToBounds = YES;\n'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
elif old_str3 in line:
line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
elif old_str4 in line:
line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
elif old_str5 in line:
line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
elif old_str6 in line:
line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
elif old_str7 in line:
line += '\n\n/*********mjbwenjian**********/\n'+className +' * '+nameStr+' = '+'[['+className+' alloc]initWithFrame:CGRectMake('+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+','+str(random.randint(0,100))+')];\n'+nameStr+'.backgroundColor = [UIColor whiteColor];'+nameStr+'.layer.borderColor = [[UIColor greenColor] CGColor];'+' '+nameStr+'.layer.cornerRadius ='+str(random.randint(5,10))+';\n'+'\n/*********mjbwenjian**********/\n\n'
file_data += line
array.remove(nameStr)
else:
file_data += line
Ropen.close()
Wopen=open(file_path,'w')
Wopen.write(file_data)
Wopen.close()
print(file_data)
def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):
#print(root) #當前目錄路徑
#print(dirs) #當前路徑下所有子目錄
print(files) #當前路徑下所有非目錄子檔案
fileNameArray = files
#遍歷資料夾下的.h和.m檔案並新增廢程式碼
for file in files:
if '.h' in file:#file_dir+'/'+file含義是file_dir資料夾下的file檔案
HFileAddMj(file_dir+'/'+file, "l;", "m;","n;","q;","y;")#往凡是以"l;", "m;","n;","q;","y;"這些中的某一個結尾的oc語句後新增費程式碼
if '.m' in file:
MFileAddMj(file_dir+'/'+file, "n];", "w];","m];","c];","p];","q];","l];")#往凡是以"n];", "w];","m];","c];","p];","q];","l];"這些中的某一個結尾的oc語句後新增費程式碼
#要修改的檔案所在的資料夾路徑
file_floadPath = '/Users/zhoujinglin/Desktop/python-H-M'#要修還得檔案所在的資料夾路徑
file_name(file_floadPath)
相關推薦
python指令碼為已建立的ios .h和.m檔案新增費程式碼
# -*- coding: utf-8 -*-import randomimport osdef getArray(): first = "abcdefghijklmnopqrstuvwxyz" second = "ABCDEFGHIJKLMNOPQRSTUVWX
python指令碼自動刪除空資料夾和非指定型別檔案(附贈批量重新命名)
python指令碼自動刪除空資料夾和非指定型別檔案 直接上程式碼吧: # -*- coding: utf-8 -*- """ Created on Sun Sep 16 22:51:27 2018 @author: lele """ import
Windows下面編譯Python指令碼為動態連結庫的方法
假設相關檔案都存放在 C:/testCython-0.15.1.tar.gzpyshield-patch.windows.python23.tar.gztest.pytest_vit.pyscripts.tar.gz其中 pyshield-patch.windows.py
Python指令碼破解圖形驗證碼(tesserocr和pytesseract)
在學習之前,我們先了解OCR、tesseract、tesserocr、pytesseract和opencv這幾個跟圖片處理有關的庫。 OCR(Optical Character Recognition)光學字元識別,是指通過掃描字元,然後通過其形狀將其翻譯成電子文字的過程。 tesserac
【VS2013】C語言呼叫Python指令碼環境搭建、函式呼叫和呼叫demo.py指令碼an
#include <stdio.h> #include <stdlib.h> #include <string.h>#include <Python.h>int main(int argc, char** argv){int arg0 = 30;int arg1
Python 建立、讀取和寫入檔案以及yield關鍵字- 千月的python linux 系統管理指南學習筆記(14)
無論是日誌檔案還是配置檔案都是我們日常運維中常見的型別,學習處理檔案的關鍵是學會如何處理文字資料。Python 包含一個稱為 file 的內建型別,可以用來處理檔案。 建立檔案物件 為了讀取一個現有的檔案,我們需要建立一個新的檔案物件,以用來對檔案進行互動。 open
福利!NodeJs爬取網路教程並生成PDF檔案,以阮一峰JavaScript教程和ES6教程為例(附原始碼和PDF檔案)
前言 你想一夜暴富嗎?你想一夜成名嗎?你想開蘭博基尼泡妞嗎?你想拿鈔票點菸嗎?你想成為世界主宰嗎?那麼,趕緊往下看吧,雖然它不能達成前面所說的任 何一個夢想,但是,你將獲得: 通過命令列將某網站的內容轉成PDF檔案 通過NodeJS爬蟲將某網路教程(例如阮一峰的JavaScript教程和ES6教
4、【Python】Python 3入門(模組/面向物件/錯誤和異常/檔案操作/序列化/命名規範)
一、模組 編寫模組有很多種方法,其中最簡單的一種便是建立一個包含函式與變數、以 .py 為字尾的檔案。 另一種方法是使用撰寫 Python 直譯器本身的本地語言來編寫模組。舉例來說,你可以使用 C 語言來撰寫 Python 模組,並且在編譯後,你可以通過標準 Pyth
多個.h和.c檔案的使用
func.h #ifndef FUNC_H #define FUNC_H int f(); #endif func.c #include "func.h" int f(){ return 1; } Test.c #include <stdio.h> #in
[Python模組學習]使用linecache模組載入和快取檔案內容
linecache模組 接觸到linecache這個模組是因為前兩天讀attrs原始碼的時候看到內部程式碼引用了這個模組來模擬一個假檔案,帶著一臉疑問順便讀了一下這個模組的原始碼,發現其實也就那麼回事兒,程式碼不多,在這總結一下。 linecache模組可以
C++模板中宣告和定義是否可以分開存放在.h和.cpp檔案中
雖然我們遇到的絕大多數情況下,模板中函式的宣告和定義都放在標頭檔案中,但我想肯定有人和我一樣,想知道是否可以分開存放。動手實驗後,會發現有的可以,有的會報錯,其實,這和編譯器有關。 要弄清楚這個問題,首先要解決兩個問題。 第一
VS2013中為C++程式生成lib和dll檔案
dll的優點 程式碼複用是提高軟體開發效率的重要途徑。只要某部分程式碼具有通用性,就可將它構造成相對獨立的功能模組並在之後的專案中重複使用。比較常見的例子是各種應用程式框架,ATL、MFC等,它們都
Xcode自定義.h和.m中檔案的個性化註釋(公司、版本、作者、版權宣告等)
每個iOS開發者新建class檔案的時候都可以看到檔案最上面宣告的一些基本資訊。而這些資訊都是預設的,我們現在就要來自定義這些資訊。新增一些自己想要新增的,比如Github連結等等。 1.下面為預設的資訊 // // VideoCell.m // W
【轉】.h和.cpp檔案的區別
首先,所有的程式碼是都可以放在一個cpp檔案裡面的。這對電腦來說沒有任何區別, 但對於一個工程來說,臃腫的程式碼是一場災難,非常不適合閱讀和後期維護, 所以.h和.cpp檔案更多的是對程式設計師的編寫習慣進行規範 用法 1、.h檔案直接#include到需要的.c
OC中在.h和.m中宣告的屬性和成員變數
區別 IOS5之前 在iOS第一版中,我們為輸出口同時聲明瞭屬性和底層例項變數,那時,屬性是OC語言的一個新的機制,並且要求你必須宣告與之對應的例項變數,例如: @interface MyViewController :UIViewController
在.h檔案和.m檔案裡使用import指令有何區別?
有的程式設計師喜歡把所有import語句寫在.h檔案的頭部。而有的程式設計師則喜歡把import語句寫在.m檔案頭部。 你可能覺得寫在哪裡都無所謂。 那麼,import語句寫在.h檔案和.m檔案的哪一個都無所謂嗎? 這並不是真的。 通常,我習慣在.h檔案頭部加入所
面向物件程式設計之.h和.cpp檔案分開編寫
對於一個小程式,一般不需要編寫標頭檔案,但是對於一個複雜的大專案,模組化編寫程式,便於理解,且容易下手,將問題分解成一小塊一小塊,逐個擊破: 抽象一個點,一個圓,並判斷點與圓的關係。(在圓內還是圓外)
Excel--使用VBA Code 動態建立、修改和刪除自定義窗體程式碼摘抄
Sub CreateUserform()'PURPOSE: Create & Modify a Userform with VBA Code'AUTHOR: John Walkenbach (www.SpreadsheetPage.com)'SOURCE: www.
UWP入門(十)--建立、寫入和讀取檔案
StorageFolder 類 StorageFile 類 FileIO 類 使用 StorageFile 物件讀取和寫入檔案 1. 建立檔案 // Create sample file; replace if exists. Windows
Xcode找不到.h或者.m檔案解決方法
× 出現這個問題會特別蛋疼,明明存在該檔案,但是一直報錯。這裡總結一下,希望對各位開發有用。 解決