0
import sys, os, os.path, re, string, time, thread, logging, copy, math, stat

from pysys import log
from pysys.constants import *

from pysys.process.helper import ProcessWrapper

def __stringToUnicode( s):
        """ Converts a unicode string or a utf-8 bit string into a unicode string. 

        """
        if isinstance(s, unicode):
            return s
        else:
            return unicode(s, "utf8")
environ ={}
for key in environ: environ[__stringToUnicode(key)] = __stringToUnicode(environ[key])

process = ProcessWrapper("C:\\Program Files\\Mozilla Firefox\\firefox", arguments=None, environs=environ, workingDir=None, state=FOREGROUND, timeout=None, stdout=None, stderr=None)
process.start()

我收到这个错误..

  process = ProcessWrapper("notepad", arguments=None, environs=environ, workingDir=None, state=FOREGROUND, timeout=None, stdout=None, stderr=None)
  File "C:\Python27\lib\site-packages\pysys\process\plat-win32\helper.py", line 105, in __init__
    for a in self.arguments: log.debug("  argument     : %s", a)
TypeError: 'NoneType' object is not iterable

我是pysys的新手。请帮帮我。

4

2 回答 2

1

当我尝试时,以下内容对我有用 - 不确定问题是否出在 unicode 翻译中。

import logging
from pysys.constants import *
from pysys import stdoutHandler
from pysys.process.helper import ProcessWrapper

stdoutHandler.setLevel(logging.DEBUG)

command="\\Program Files\\Mozilla Firefox\\firefox.exe"
process = ProcessWrapper(command, arguments=[], environs=os.environ, workingDir=os.getcwd(), state=BACKGROUND, timeout=None)
process.start()
于 2015-07-03T10:54:25.497 回答
0

显然,ProcessWrapper()期望arguments是一个可迭代的(列表或元组可以)。

而不是None,使用()(一个空元组)。

但是请注意,workingDir 应该将其设置为字符串。用于os.getcwd()合理的默认值。timeout还必须设置为等待的整数秒数。我想 60 秒(一整分钟)和任何东西一样好。

您可以省略stdoutandstderr参数并将其保留为默认值:

process = ProcessWrapper("C:\\Program Files\\Mozilla Firefox\\firefox", arguments=() environs=environ, workingDir=os.getcwd(), state=FOREGROUND, timeout=60)
于 2012-11-22T10:08:31.890 回答