span8
span4
嗨,
我想利用在PythonCaller一些代码来制定的工作日天数。
我发现这个代码已经被公布。
从日期时间进口日期时间(周一,周二,周三,周四,周五,周六,周日)日期时间进口timedelta进口FME进口fmeobjects =范围(7)周末=(SAT,SUN)DEF NETWORKDAYS(开始日期,结束日期,节假日= []):delta_days =(END_DATE - 起始日期).days + 1 full_weeks,extra_days = divmod(delta_days,7)#num_workdays =多少天/周,你的工作周num_workdays的*总#=(full_weeks + 1)*(7 - LEN(周末))#减去落在在“缩短周”为d范围内的任何工作日(1,8 - extra_days):如果(END_DATE + timedelta(d))平日()不是在周末:num_workdays - = 1 # skip holidays that fall on weekends holidays = [x for x in holidays if x.weekday() not in weekends] # subtract out any holidays for d in holidays: if start_date <= d <= end_date: num_workdays -= 1 return num_workdays def processFeature(feature): start_date = datetime.strptime(str(feature.getAttribute("pyStartDate")), "%Y%m%d").date() end_date = datetime.strptime(str(feature.getAttribute("pyEndDate")), "%Y%m%d").date() holidays = [datetime.strptime(date, "%Y%m%d").date() for date in feature.getAttribute("pyHolidays").split("_")] feature.setAttribute("py_networkdays", networkdays(start_date, end_date, holidays))
我这个转换到Python 3为无法2.7运行,但得到这个错误一旦转换并能运行代码。
PythonFactory无法加载蟒蛇符号`FeatureProcessor”
厂代理未初始化
PythonCaller(PythonFactory):PythonFactory无法处理功能
发生致命错误。检查上面详细日志文件
搜索后,我发现收到这个错误,该局建议与FeatureProcessor更换processFeature时
所以我现在运行惯例和FeatureProcessor更改后的代码。
从日期时间进口日期时间(周一,周二,周三,周四,周五,周六,SUN)=列表的日期时间进口timedelta进口FME进口fmeobjects(范围(7))周末=(SAT,SUN)DEF NETWORKDAYS(开始日期,结束日期,节日= []):delta_days =(END_DATE - 起始日期).days + 1 full_weeks,extra_days = divmod(delta_days,7)#num_workdays =多少天/周,你的工作周num_workdays的*总#=(full_weeks + 1)*(7 - LEN(周末))#减去落在在 '缩短周' 为d范围内的任何工作日内(1,8 - extra_days):如果(END_DATE + timedelta(d)。)平日()不是在周末: num_workdays -= 1 # skip holidays that fall on weekends holidays = [x for x in holidays if x.weekday() not in weekends] # subtract out any holidays for d in holidays: if start_date <= d <= end_date: num_workdays -= 1 return num_workdays def FeatureProcessor(feature): start_date = datetime.strptime(str(feature.getAttribute("pyStartDate")), "%Y%m%d").date() end_date = datetime.strptime(str(feature.getAttribute("pyEndDate")), "%Y%m%d").date() holidays = [datetime.strptime(date, "%Y%m%d").date() for date in feature.getAttribute("pyHolidays").split("_")] feature.setAttribute("py_networkdays", networkdays(start_date, end_date, holidays))
现在我得到这个错误。
Python异常
同时调用函数`FeatureProcessor遇到错误”
PythonCaller(PythonFactory):PythonFactory无法处理功能
发生致命错误。检查上面详细日志文件
咬了我的深度与此出。对不起贴了这么多给开始我已经一路上搞砸了什么,我的情况也做了尽头。
我如何能解决这个错误,或者任何想法,有一个更好的办法做到工作日计算?
我也曾尝试WorkingDaysCalculator功能,我发现了,但这并不让度假的日期,也不会允许开始之前结束日期(我的开始日期是在我的情况的目标日期,以便发生这种情况)
谢谢
凯文
pyHolidays需要不能为空,你怎么设置这个属性?
如果目标日期(端)的日期(开始)之前,我不认为在节假日会正常工作原样。
我假设你想要的东西类似下面的结果:
日期(开始)
开始日期 | 结束日期 | 假期 | 工作日 |
13/01/2020 | 15/01/2020 |
14/01/2020 | 1 |
15/01/2020 | 13/01/2020 |
14/01/2020 |
-1 |
15/01/2020 | 17/02/2020 | 14/01/2020 |
2 |
我已经加入pyHolidays为CSV。
不知道我是否正确做,是诚实的。
只是在玩这个。我已经能够添加pyHolidays CSV并加入到表所以现在这是没有错运行。
现在这个工作惊人。
谢谢您的帮助。
©2020安全亚搏在线软件公司|法律