কে এফএমই পাইথন এক্সটেনশন ব্যবহার করে এবং কীভাবে?


উত্তর:


9

আমি কেবল এফএমই দিয়ে শুরু করছি, এবং আমার টার্গেট এফজিডিবি অন্য স্থানে অনুলিপি করতে এবং লগ ফাইলটি সংরক্ষণ করতে একটি শাটডাউন স্ক্রিপ্ট ব্যবহার করছি:

import distutils.dir_util, shutil, os, time, locale

src = 'C:/Testing/FME/TPW/Third_Party_Wells.gdb'
dst = '//share/Data Services/GIS Data/Data/Third Party Wells/Third_Party_Wells.gdb'

distutils.dir_util.copy_tree(src, dst)

logfile = FME_LogFileName
shutil.copy(logfile, 'C:/temp/PRD_' + os.path.basename(logfile)[:-4] + '_' + time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime()) + '.log')

# Get features written counts
shl_count = str(FME_FeaturesWritten['ThirdPartyWellsSurface'])
bhl_count = str(FME_FeaturesWritten['ThirdPartyWellsBottom'])
lat_count = str(FME_FeaturesWritten['ThirdPartyWellsLaterals'])

# Write out features written counts to log
fm_log = open('C:/temp/PRD_Counts.log','a')
fm_log.write(time.strftime('%m/%d/%Y %I:%M:%S', time.localtime()) + ',' + shl_count + ',' + bhl_count + ',' + lat_count + ',' + str(FME_TotalFeaturesWritten) + '\n')

এটি বেশ বেসিক, তবে আমার মনে হয় না এমন কোনও সীমা নেই। সেখানে ধারনা টন হয় এখানে হিসাবে ভাল।

সম্পাদনা: লিখিত বৈশিষ্ট্যগুলির সংখ্যা পেতে কোড যুক্ত করা এবং সেগুলি সিএসভি লগ ফাইলে ঠেকান।


5

অলিভারের পাইথন কর্নারে একবার দেখুন। এফএমইতে পাইথন ব্যবহার করে আপনি করতে পারেন এমন অনেকগুলি জিনিস।

আমি প্রায়শই 10 টি বিভিন্ন ট্রান্সফর্মার ব্যবহারের পরিবর্তে 1 ট্রান্সফর্মারের অভ্যন্তরে কিছু অ্যাট্রিবিউটম্যানিপুলেশন তৈরি করতে পাইথন কলার ব্যবহার করি (যদি অন্য কোনও এলিফ এলিফ থাকে ..)

এই উদাহরণের মতো আপনার কাছে খুব বেসিক পাইথন কলার থাকতে পারে যা আপনার সমস্ত বৈশিষ্ট্যকে বড় হাতের মানগুলিতে রূপান্তর করবে:

def upperAll(feature):
    for att in feature.getAttributeList():
        feature.setAttribute(att,feature.gettAttribute(att).upper())

আমি ব্যর্থতার ক্ষেত্রে ইমেলগুলি প্রেরণ করতে বা কোনও এফটিপি সার্ভার ইত্যাদির সাথে ইন্টারেক্ট করার জন্য পাইথন কলার ব্যবহার করি really

মজা এবং খুশি এফএমইং

জেফ


ওহোহহহহ ... আমি এর শব্দ শুনতে পছন্দ করি ... পাইথনকলারকে সেভাবে ব্যবহার করার কথা কখনও ভাবেনি!
চাদ কুপার

এটির অতিরিক্ত প্রশ্ন ... ইমেলটি কাজ করার জন্য আপনার 25 বন্দরটি (ফায়ারওয়াল) অ্যাক্সেস দিতে হবে? আমি কয়েক সপ্তাহ ধরে এটির সাথে লড়াই করেছি এবং শেষ পর্যন্ত হাল ছেড়ে দিয়েছি।
blord-castillo

4

উপরে উদাহরণস্বরূপ: আমি বর্তমানে এফএমইপিডিয়া নামে আমাদের নলেজব্যাকের জন্য একটি নিবন্ধ লিখছি: পাইথন এবং এফএমই বেসিক্স

এর মধ্যে কয়েকটি সাধারণ উদাহরণ রয়েছে যেমন স্টার্ট আপ স্ক্রিপ্ট সহ একটি ওয়ার্কস্পেস চালানোর আগে কোনও ফাইল মুছে ফেলা, পাইথনকলারের সাহায্যে বৈশিষ্ট্যগুলি ম্যানিপুলেট করা ইত্যাদি আরও জটিল উদাহরণগুলির লিঙ্কও রয়েছে।

কেন ব্র্যাগ নিরাপদ সফ্টওয়্যার


3

উদাহরণ:

কাস্টম লগ

import os.path, time, os, datetime, __main__ , sys, pyfme,shutil
from pyfme import *

class expFeature(object):
    def __init__(self):
        self.logger = pyfme.FMELogfile()
        pass

    def close(self):
            try:
                #folders creation
                os.makedirs(param_folder)
                #Log creation
                logFile = param_folder + timecreated +".log"
                FILE = open(logFile,"w")
                log=FMELogfile(logFile)
                log.log("Bla bla bla")

এবং ইমেল পাঠান :

message = MIMEMultipart()
message["From"]    = email_from
message["To"]      = email_to
message['Date']    = formatdate(localtime=True)
message["Subject"] = subject
message.attach( MIMEText(html, 'html') )
attachment = MIMEBase('application', "octet-stream")
attachment.set_payload( open(FileLog,"rb").read() )
Encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment; filename="%s"' %       os.path.basename(FileLog))
message.attach(attachment)

smtp = smtplib.SMTP(smtpServer) 
smtp.sendmail(email_from, email_to, message.as_string())         
print "Successfully sent email"
smtp.close() 

1

আমি সম্প্রতি একটি পাইথনকলার ট্রান্সফর্মার ব্যবহার করছি যা একটি সিএসভি ফাইল থেকে স্থানাঙ্ক পায় এবং এগুলি বৈশিষ্ট্য হিসাবে সংরক্ষণ করে। সিএসভি অন্য একটি ওয়ার্কস্পেস থেকে লেখা হয়েছে যা একটি বাউন্ডসেক্টরেক্টর ট্রান্সফর্মার ব্যবহার করে যা আমার আগ্রহের ক্ষেত্রের একটি সীমানা বাক্স থেকে সীমানা স্থানাঙ্ক পায়।

আমি তখন এই বৈশিষ্ট্যগুলি অন্য ওয়ার্কস্পেস রুনারগুলিতে পাস করি যা আরও প্রক্রিয়াকরণের জন্য সন্ধানী উইন্ডো হিসাবে সীমাবদ্ধ স্থানাঙ্কগুলি ব্যবহার করে। আমার কাছে স্টেট-ওয়াইড ডেটা রয়েছে এবং পুরো রাজ্যে প্রক্রিয়া করতে বেশ কয়েক ঘন্টা সময় লাগবে। যেহেতু আমি আমার প্রসেসিংটিকে একটি নির্দিষ্ট উইন্ডোতে সীমাবদ্ধ করি, পুরো জিনিসটি এক মিনিট সময় নেয়।

পাইথন কলার কোডটি এখানে রয়েছে:

import fmeobjects
import csv
import re

# Template Function interface:
def getBounds(feature):

    outputDirectory = FME_MacroValues['Output_Directory']   # Set outputDirectory
    NativeTitle = FME_MacroValues['Native_Title'] # Set NativeTitle
    NativeTitle = re.sub('\W','_',NativeTitle)
    NativeTitle = re.sub(' ','_',NativeTitle)

    csvPath = outputDirectory + '\\' + NativeTitle + '_boundingbox.csv'       # Set csvPath

    # open csv file containing bounding coordinates
    with open(csvPath, 'rb') as csvfile:
        reader = csv.reader(csvfile, delimiter = ',')
        bounds = reader.next()

    # Set bounding variables
    XMIN = float(bounds[0])
    XMAX = float(bounds[1])
    YMIN = float(bounds[2])
    YMAX = float(bounds[3])    

    # Set attributes to variable values
    feature.setAttribute("_xmin", XMIN)
    feature.setAttribute("_ymin", YMIN)
    feature.setAttribute("_xmax", XMAX)
    feature.setAttribute("_ymax", YMAX)

    pass

আমি পাইথন স্টার্ট আপ স্ক্রিপ্টও ব্যবহার করি যা কোনও ফোল্ডার ট্রিটিকে ইতিমধ্যে উপস্থিত না থাকলে অন্য জায়গায় অনুলিপি করে।

import os
import fmeobjects
import shutil


srcDir_project = r'W:\AlignmentSheets\PostInstall\Alignment Sheet Generator\ProjectData\ProjectNameFolder'
srcDir_settings = r'W:\AlignmentSheets\PostInstall\Alignment Sheet Generator\ProjectData\Settings'

destBaseDir = FME_MacroValues['Output_Directory']
destDir_project = destBaseDir + '\\' + FME_MacroValues['A_Sheet_Project_Name'] + '\\'
destDir_settings = destBaseDir + '\\Settings\\'

if not os.path.exists(destDir_project):
    shutil.copytree(srcDir_project,destDir_project)
    print 'Successfully created "%s"' % destDir_project
else:
    print '"%s" Already Exists.  Not Creating Folder.' % destDir_project

if not os.path.exists(destDir_settings):
    shutil.copytree(srcDir_settings,destDir_settings)
    print 'Successfully created "%s"' % destDir_settings
else:
    print '"%s" Already Exists.  Not Creating Folder.' % destDir_settings
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.