আমি স্বাদ অনুযায়ী স্ট্রিং / অ্যাপ_নাম কীভাবে আলাদা করব?
আমি একটি আপডেট লিখতে চেয়েছিলাম, তবে বুঝতে পেরেছিলাম যে এটি মূল উত্তরের চেয়ে বড় যে আমি উত্সটিকে প্যাচানো একটি পাইথন স্ক্রিপ্ট ব্যবহার করি।
পাইথন স্ক্রিপ্টের একটি প্যারামিটার, একটি ডিরেক্টরি নাম রয়েছে। সেই ডিরেক্টরিতে প্রতি-স্বাদযুক্ত সম্পদ, লঞ্চার আইকনের মতো সংস্থানসমূহ এবং পাইথন অভিধান সহ ফাইল বৈশিষ্ট্য t টেক্সট রয়েছে।
{ 'someBoolean' : True
, 'someParam' : 'none'
, 'appTitle' : '@string/x_app_name_xyz'
}
পাইথন স্ক্রিপ্ট সেই ফাইলটি থেকে অভিধানটি লোড করে এবং এর মান <string name="app_name">
এবং </string>
এর মান দ্বারা প্রতিস্থাপন করে properties['appTitle']
।
নীচের কোডটি যেমন হিসাবে রয়েছে তেমন ভিত্তিতে প্রদান করা হয়েছে ইত্যাদি etc.
for strings_xml in glob.glob("res/values*/strings.xml"):
fileReplace(strings_xml,'<string name="app_name">',properties['appTitle'],'</string>',oldtextpattern=r"[a-zA-Z0-9_/@\- ]+")
এই জাতীয় এক বা একাধিক ফাইল থেকে বৈশিষ্ট্যগুলি পড়তে:
with open(filename1) as f:
properties = eval(f.read())
with open(filename2) as f:
properties.update(eval(f.read()))
এবং ফাইলপ্লেস ফাংশনটি হ'ল:
really = True
def fileReplace(fname,before,newtext,after,oldtextpattern=r"[\w.]+",mandatory=True):
with open(fname, 'r+') as f:
read_data = f.read()
pattern = r"("+re.escape(before)+r")"+oldtextpattern+"("+re.escape(after)+r")"
replacement = r"\g<1>"+newtext+r"\g<2>"
new_data,replacements_made = re.subn(pattern,replacement,read_data,flags=re.MULTILINE)
if replacements_made and really:
f.seek(0)
f.truncate()
f.write(new_data)
if verbose:
print "patching ",fname," (",replacements_made," occurrence" + ("s" if 1!=replacements_made else ""),")",newtext,("-- no changes" if new_data==read_data else "-- ***CHANGED***")
elif replacements_made:
print fname,":"
print new_data
elif mandatory:
raise Exception("cannot patch the file: "+fname+" with ["+newtext+"] instead of '"+before+"{"+oldtextpattern+"}"+after+"'")
স্ক্রিপ্টের প্রথম লাইনগুলি হ'ল:
#!/usr/bin/python
# coding: utf-8
import sys
import os
import re
import os.path
import shutil
import argparse
import string
import glob
from myutils import copytreeover