无法用启动进程助手.py在python pysys中

2024-06-28 17:51:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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的新手。请帮帮我。你知道吗


Tags: keyinfromimportnonelogstringos
2条回答

当我尝试它时,下面的内容对我很有用-不确定问题是否出在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()

显然,ProcessWrapper()期望arguments是iterable(列表或元组就可以了)。你知道吗

使用()(空元组)代替None。你知道吗

但是请注意,workingDir应该设置为字符串。使用os.getcwd()作为一个正常的默认值。timeout也必须设置为等待秒的整数计数。我想60秒(整整一分钟)是最好的。你知道吗

您可以省略stdoutstderr参数,并保留它们的默认值:

process = ProcessWrapper("C:\\Program Files\\Mozilla Firefox\\firefox", arguments=() environs=environ, workingDir=os.getcwd(), state=FOREGROUND, timeout=60)

相关问题 更多 >