我想将输出的print语句重定向到文本文件。我已经导入了sys并在下面尝试过。
import pprint
import os
import math
import sys
class ExportLimits(object):
MMAP_ITER_TRIPS = 'manpower_mappings.map_iterator_trips'
def __init__(self, workset, crew_type, bid_period, divisor_files=None):
log_file = "/opt/test/test_user/data/ESR_DATA/etab/slogfile.txt"
sys.stdout = open(log_file, 'w')
self.workset = workset
self.crew_type = crew_type
self.bid_period = bid_period
self.tm = workset.getTM()
self.crew_bid_period = self.crew_type + "+" + self.bid_period
self.bid_period = self.tm.table('qf_user_bid_period')[(self.crew_bid_period)]
self.period = Period(self.bid_period.bpstart, self.bid_period.bpend)
self.filter_matcher = self._get_filter_matcher()
self.iterator_trips = rave_api.eval(\
ExportLimits.MMAP_ITER_TRIPS)[0]
self.divisor_reader_lh = divisor_reader_lh.DivisorReader(\
divisor_files=divisor_files)
self.divisor_reader_sh = divisor_reader_sh.DivisorReader(\
divisor_files=divisor_files)
self.pp_start = self.period.getStart()
self.pp_end = self.period.getEnd()
def export_limits(self, item_type):
if item_type == 'DKSH':
self._mandays_limits(SLKHH_GROUPS)
else:
self._mandays_limits(LAJSDLH_GROUPS)
def _mandays_limits(self, groups):
crews = [self.tm.table('crew')[('99172447',)],
self.tm.table('crew')[('7654678',)]]
generator = ((crew, self.filter_matcher.getFilterNamePeriodsMap(crew.id))
for crew in self.tm.table('crew'))
minres = defaultdict(lambda :RelTime(0))
maxres = defaultdict(lambda :RelTime(0))
for crew, group_to_periods in generator:
print crew, group_to_periods
try:
crew_filter, period = group_to_periods.iteritems().next()
except StopIteration:
continue
if crew_filter not in groups:
continue
它部分适用于我。我可以打印几行,但不完全。请找到我的日志文件的以下输出,其中只打印了较少的行而不是完整的日志。 由于某种原因,它没有完全打印。 (请查看日志文件的最后一行,其中只打印“alia”。)
日志文件:
crew _id =“133245”id =“176543”empno =“8761890”sex =“M” birthday =“19681217”name =“MICHEAL”forenames =“LUCAS”maincat =“C” preferredname =“ESWAR”initials =“LL”joindate =“20010910 00:00” comjoindate =“20010910 00:00” _void =“title,logname,si,bcity,bstate,bcountry,alias,comenddate”{'X-SYD-BB-AUSLLH':[26JUN2017 00:00-21AUG2017 00:00]}
crew _id =“214141”id =“132451”empno =“145432”sex =“M” birthday =“19630904”name =“ESWARF”forenames =“FJDJSK”maincat =“C” preferredname =“ESWADF”initials =“WL”joindate =“20010910 00:00” comjoindate =“20010910 00:00” _void =“称号,日志名,SI,bcity,bstate,bcountry,其他外
〜
〜
请检查并提出建议。
答案 0 :(得分:0)
您可以这样编写:
,而不是使用sys.stdoutoutput_file = open(log_file, 'w')
output_file.write('testing asdasdfsd')
或者如果你想在日志文件中写下各种打印值,那么:
output_file = open(log_file,'w')
sys.stdout = output_file
就是这样。