1. 程式人生 > >python指令碼為已建立的ios .h和.m檔案新增費程式碼

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

range(index):

            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',

'UIImageView']#.h檔案裡屬性的型別從這個數組裡隨機選

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指令碼破解圖形驗證碼(tesserocrpytesseract)

在學習之前,我們先了解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、【PythonPython 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++程式生成libdll檔案

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檔案解決方法

× 出現這個問題會特別蛋疼,明明存在該檔案,但是一直報錯。這裡總結一下,希望對各位開發有用。 解決