When the error began occurring, I was using the Pywikibot nightly dump from
February 25 of this year. It continues to occur with the nightly dump from
yesterday (June 23). I just tried the fileno = lambda: 10 trick and it had
no effect.

As for core, it's been four months since I last tried it so I don't recall
the issues. It's past bedtime for me right now, but I'll look into giving
it another try within the next day or two when I have some time.


On Tue, Jun 24, 2014 at 3:17 AM, Merlijn van Deen <[email protected]>
wrote:

> On 24 June 2014 06:17, Jonathan Goble <[email protected]> wrote:
>
> I've given up trying to solve a bug that popped up in my scripts a couple
>> days ago. I run a bot for Wookieepedia, over at Wikia, and run three simple
>> scripts on a daily basis. They are set up to run automatically through
>> Windows Task Scheduler. Since they run automatically, they run in the
>> background through pythonw.exe, i.e. without a console, and therefore I
>> need a means of getting the output. My solution for the past two months has
>> been to redirect sys.stdout and sys.stderr to the same StringIO() instance,
>> then at the end call getvalue() on that and email it to myself.
>>
>
> Could it be you haven't updated in a few years? It sounds like it's
> related to a feature that I added two or three years ago, that allowed
> Windows users to get full unicode out- and input. However, that does mean
> sys.stdin and sys.stdout are no longer being used. We /do/ check whether
> the user has redirected the output using normal shell redirection, but your
> method doesn't do that.
>
> There are a two options I can think of.
>   - use normal shell redirection, e.g.
> https://stackoverflow.com/questions/8662024/how-do-i-capture-the-output-of-a-script-if-it-is-being-ran-by-the-task-scheduler
>
>   - trick the code into thinking you're doing 'regular' redirection by
> adding a fileno function to your streams:
>     see
> https://github.com/wikimedia/pywikibot-compat/blob/master/userinterfaces/win32_unicode.py#L92
>
>     you'd need something like x = StringIO.StringIO(); x.fileno = lambda:
> 10
>     and the same for stdout.
>
>  (By the way, the answer is NOT "switch to core". I have tried to get
>> core to run on my system and failed miserably after two hours of repeated
>> attempts without even getting it to talk to the wiki. Compat worked
>> perfectly on the first try. Until such time as core can be installed by a
>> beginner, it is not for me.)
>>
>
> I would appreciate it if you could clarify what the issues were you ran
> into.
>
> Merlijn
>
>
> _______________________________________________
> Pywikipedia-l mailing list
> [email protected]
> https://lists.wikimedia.org/mailman/listinfo/pywikipedia-l
>
>
_______________________________________________
Pywikipedia-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-l

Reply via email to