コード例 #1
0
def printf( s ):
    if sys.platform == 'win32':
        import win32console as W
        W.SetConsoleOutputCP( 65001 )
        W.SetConsoleCP( 65001 )
    try: print s
    except: pass
コード例 #2
0
ファイル: encoding_changer.py プロジェクト: FI-Mihej/Cengal
    def change_console_output_cp(new_output_cp=None, new_input_cp=None, encoding_error=None):
        """
        :param new_output_cp: ResultExistence(True, (65001, 'utf-8))
        :param new_input_cp: ResultExistence(True, (65001, 'utf-8))
        :return:
        """
        encoding_error = encoding_error or 'replace'
        cur_output_cp = None
        cur_input_cp = None
        cur_output_cp_name = str()
        cur_input_cp_name = str()
        original_stdout = sys.stdout
        original_stderr = sys.stderr
        original_stdin = sys.stdin
        original_stdout_fileno = sys.stdout.fileno()
        original_stderr_fileno = sys.stderr.fileno()
        original_stdin_fileno = sys.stdin.fileno()
        new_stdout = None
        new_stderr = None
        new_stdin = None
        if 'nt' == os.name:
            if IS_RUNNING_IN_PYCHARM:
                yield None
            else:
                with os.fdopen(os.dup(original_stdout_fileno), 'wb') as copied_stdout, \
                        os.fdopen(os.dup(original_stderr_fileno), 'wb') as copied_stderr, \
                        os.fdopen(os.dup(original_stdin_fileno), 'wb') as copied_stdin, \
                        os.fdopen(os.dup(original_stdout_fileno), 'wb') as copied_stdout_buff, \
                        os.fdopen(os.dup(original_stderr_fileno), 'wb') as copied_stderr_buff, \
                        os.fdopen(os.dup(original_stdin_fileno), 'wb') as copied_stdin_buff:
                    # copied_stdout = os.fdopen(os.dup(original_stdout_fileno), 'wb')
                    # copied_stderr = os.fdopen(os.dup(original_stderr_fileno), 'wb')
                    # copied_stdin = os.fdopen(os.dup(original_stdin_fileno), 'wb')
                    # copied_stdout_buff = os.fdopen(os.dup(original_stdout_fileno), 'wb')
                    # copied_stderr_buff = os.fdopen(os.dup(original_stderr_fileno), 'wb')
                    # copied_stdin_buff = os.fdopen(os.dup(original_stdin_fileno), 'wb')
                    original_stdout.flush()
                    original_stderr.flush()
                    original_stdin.flush()

                    cur_output_cp = win32console.GetConsoleOutputCP()
                    cur_output_cp_name = sys.stdout.encoding
                    if (new_output_cp is not None) and new_output_cp.existence:
                        new_stdout = open(copied_stdout.fileno(), mode='w', encoding=new_output_cp.result[1],
                                          buffering=1)
                        sys.stdout = new_stdout
                        # print('stdout:', sys.stdout.encoding)
                        new_stderr = open(copied_stderr.fileno(), mode='w', encoding=new_output_cp.result[1],
                                          buffering=1)
                        sys.stderr = new_stderr
                        # print('stderr:', sys.stderr.encoding)
                        win32console.SetConsoleOutputCP(new_output_cp.result[0])
                        # print('conout:', win32console.GetConsoleOutputCP())
                    cur_input_cp = win32console.GetConsoleCP()
                    cur_input_cp_name = sys.stdin.encoding
                    if (new_input_cp is not None) and new_input_cp.existence:
                        new_stdin = open(copied_stdin.fileno(), mode='r', encoding=new_input_cp.result[1],
                                         buffering=1)
                        sys.stdin = new_stdin
                        # print('stdin:', sys.stdin.encoding)
                        win32console.SetConsoleCP(new_input_cp.result[0])
                        # print('conin:', win32console.GetConsoleOutputCP())
                    try:
                        yield ((cur_input_cp, cur_output_cp), (cur_input_cp_name, cur_output_cp_name))
                    except:
                        raise
                    finally:
                        sys.stdout.flush()
                        sys.stderr.flush()
                        sys.stdin.flush()

                        if (new_output_cp is not None) and new_output_cp.existence:
                            win32console.SetConsoleOutputCP(cur_output_cp)
                            # print('conout:', win32console.GetConsoleOutputCP())
                            os.dup2(copied_stdout_buff.fileno(), original_stdout_fileno)
                            sys.stdout = original_stdout
                            # print('stdout:', sys.stdout.encoding)
                            os.dup2(copied_stderr_buff.fileno(), original_stderr_fileno)
                            sys.stderr = original_stderr
                            # print('stderr:', sys.stderr.encoding)
                        if (new_input_cp is not None) and new_input_cp.existence:
                            win32console.SetConsoleCP(cur_input_cp)
                            # print('conin:', win32console.GetConsoleOutputCP())
                            os.dup2(copied_stdin_buff.fileno(), original_stdin_fileno)
                            sys.stdin = original_stdin
                            # print('stdin:', sys.stdin.encoding)
        else:
            yield None
コード例 #3
0
def serverConfig():
    import sys
    args = sys.argv
    settings = ConfigParser()
    gameSettings = {}

    def promptAndExit():
        usage = \
        '''
            -help:
            -config:
        '''
        print usage
        sys.exit()

    if len(args) > 1:
        command = args[1]
        if command == '-help':
            promptAndExit()
        elif command == '-config':
            try:
                filename = args[2]
                settings.read(filename)
            except:
                promptAndExit()
        else:
            promptAndExit()
    else:
        try:
            try:
                open('melee.ini', 'r')
            except Exception as e:
                print e
                raise
            settings.read('melee.ini')
        except:
            promptAndExit()

    try:
        try:
            gameSettings['game_server_data_dir'] = settings.get(
                'Game', 'DataDir')
        except:
            gameSettings['game_server_data_dir'] = './data'

        gameSettings['web_server_port'] = settings.getint('web', 'web_port')
        gameSettings['web_server_host'] = settings.get('web', 'web_host')
        gameSettings['web_server_root_dir'] = settings.get(
            'web', 'web_rootDir')
        #gameSettings['web_server_root_page'] = settings.get('web', 'web_rootPage')
        gameSettings['web_server_images_dir'] = settings.get(
            'web', 'web_imagesDir')
        gameSettings['web_server_data_dir'] = settings.get(
            'web', 'web_dataDir')

        gameSettings['db_server_host'] = settings.get('database', 'db_host')
        gameSettings['db_server_port'] = settings.getint('database', 'db_port')
        gameSettings['db_server_name'] = settings.get('database', 'db_name')
        gameSettings['db_server_user'] = settings.get('database', 'db_user')
        gameSettings['db_server_password'] = settings.get(
            'database', 'db_password')

        try:
            gameSettings['log_twisted'] = settings.get('log', 'log_main')
        except:
            gameSettings['log_twisted'] = './mainErrors.log'
        try:
            gameSettings['log_amfast'] = settings.get('log', 'log_secondary')
        except:
            gameSettings['log_amfast'] = './secondaryErrors.log'

    except Exception as e:
        print e
        sys.exit()

    try:
        f = open('./version.txt', 'r')
        global version
        version = f.readline()
        f.close()
    except:
        log.msg('There is No file names version.txt in current Directory!')

    dbpool = MySQLdb.connect(host=gameSettings['db_server_host'],
                             user=gameSettings['db_server_user'],
                             passwd=gameSettings['db_server_password'],
                             port=gameSettings['db_server_port'],
                             db=gameSettings['db_server_name'],
                             charset='utf8')

    import util.util
    import util.dbaccess
    util.dbaccess.dbpool = dbpool
    util.util.dbpool = dbpool

    reload(sys)
    sys = sys
    sys.setdefaultencoding('utf-8')

    #print sys.getdefaultencoding()

    if sys.platform == 'win32':
        try:
            import win32console
        except:
            print "Python Win32 Extensions module is required.\n You can download it from https://sourceforge.net/projects/pywin32/ (x86 and x64 builds are available)\n"
            exit(-1)
        # win32console implementation  of SetConsoleCP does not return a value
        # CP_UTF8 = 65001
        win32console.SetConsoleCP(65001)
        if (win32console.GetConsoleCP() != 65001):
            raise Exception("Cannot set console codepage to 65001 (UTF-8)")
        win32console.SetConsoleOutputCP(65001)
        if (win32console.GetConsoleOutputCP() != 65001):
            raise Exception(
                "Cannot set console output codepage to 65001 (UTF-8)")

    sys.stdout = codecs.getwriter('utf8')(sys.stdout)
    sys.stderr = codecs.getwriter('utf8')(sys.stderr)

    from zope.interface import implements

    class loogoo:
        implements(log.ILogObserver)

        def __init__(self):
            self.file = file(gameSettings['log_twisted'], 'w')

        def __call__(self, eventDict):
            if 'logLevel' in eventDict:
                level = eventDict['logLevel']
            elif eventDict['isError']:
                level = 'ERROR'
            else:
                level = 'INFO'
            text = log.textFromEventDict(eventDict)
            if text is None or level != 'ERROR':
                return
            self.file.write(str(level) + '\r\n' + text + '\r\n')
            self.file.flush()

    import amfast
    from logging import FileHandler
    amfast.logger.addHandler(FileHandler(gameSettings['log_amfast'], 'w'))

    log.addObserver(loogoo())
    log.startLogging(sys.stdout)

    #loader.read('./data')

    loader.read(gameSettings['game_server_data_dir'])

    root.addHost(gameSettings['web_server_host'],
                 static.File(gameSettings['web_server_root_dir']))
    root.putChild('images', static.File(gameSettings['web_server_images_dir']))
    root.putChild('data', static.File(gameSettings['web_server_data_dir']))

    reactor.listenTCP(gameSettings['web_server_port'], MeleeSiteFactory(root))
    '''每天8点给所有玩家加90点活力'''
    '''每天8点玩家宿屋操作次数置0'''
    '''每天8点玩家进入副本次数置0'''
    currSeconds = time.time()
    hour = datetime.datetime.now().hour
    minute = datetime.datetime.now().minute
    second = datetime.datetime.now().second
    if hour >= 8:
        delta = (hour - 8) * 3600 + minute * 60 + second
        delta = 3600 * 24 - delta
    else:
        delta = (8 - hour - 1) * 3600 + (60 - minute) * 60 + (60 - second)
        delta = 3600 * 24 + delta
    reactor.callLater(delta, addEnergyPerDay)
    reactor.callLater(delta, resetPlayerRestCountPerDay)
    reactor.callLater(delta, resetPlayerEnterInstanceCount)
コード例 #4
0
    def __init__(self,
                 path,
                 host_pid,
                 codepage=None,
                 window_size_x=80,
                 window_size_y=25,
                 buffer_size_x=80,
                 buffer_size_y=16000,
                 local_echo=True,
                 interact=False,
                 **kwargs):
        """Initialize the console starts the child in it and reads the console periodically.

        Args:
            path (str): Child's executable with arguments.
            parent_pid (int): Parent (aka. host) process process-ID
            codepage (:obj:, optional): Output console code page.
        """
        self.lastRead = 0
        self.__bufferY = 0
        self.lastReadData = ""
        self.totalRead = 0
        self.__buffer = StringIO()
        self.__currentReadCo = win32console.PyCOORDType(0, 0)
        self.pipe = None
        self.connection = None
        self.consin = None
        self.consout = None
        self.local_echo = local_echo
        self.console_pid = os.getpid()
        self.host_pid = host_pid
        self.host_process = psutil.Process(host_pid)
        self.child_process = None
        self.child_pid = None
        self.enable_signal_chars = True

        logger.info(
            f'ConsoleReader started. location {os.path.abspath(__file__)}')

        if codepage is None:
            codepage = windll.kernel32.GetACP()

        try:
            logger.info("Setting console output code page to %s" % codepage)
            win32console.SetConsoleOutputCP(codepage)
            logger.info("Console output code page: %s" %
                        ctypes.windll.kernel32.GetConsoleOutputCP())
        except Exception as e:  # pragma: no cover
            # I hope this code is unreachable...
            logger.error(e)

        try:
            self.create_connection(**kwargs)
            logger.info('Spawning %s' % path)
            try:
                self.initConsole()
                si = win32process.GetStartupInfo()
                self.__childProcess, _, self.child_pid, self.child_tid = win32process.CreateProcess(
                    None, path, None, None, False, 0, None, None, si)
                self.child_process = psutil.Process(self.child_pid)

                logger.info(
                    f'Child pid: {self.child_pid}  Console pid: {self.console_pid}'
                )

            except Exception:  # pragma: no cover
                # I hope this code is unreachable...
                logger.error(traceback.format_exc())
                return

            if interact:
                self.interact()
                self.interact()

            self.read_loop()
        except Exception:  # pragma: no cover
            # I hope this code is unreachable...
            logger.error(traceback.format_exc())
        finally:
            try:
                self.terminate_child()
                time.sleep(.01)
                self.send_to_host(self.readConsoleToCursor())
                self.sendeof()
                time.sleep(.1)
                self.close_connection()
                logger.info('Console finished.')
            except Exception:  # pragma: no cover
                # I hope this code is unreachable...
                logger.error(traceback.format_exc())
コード例 #5
0
import win32console
import feedparser
import urllib.request

win32console.SetConsoleCP(65001)
win32console.SetConsoleOutputCP(65001)

proxy = urllib.request.ProxyHandler({'https': 'proxy-rie.http.insee.fr:8080'})

d = feedparser.parse(
    "https://www.courrierinternational.com/feed/category/6260/rss.xml",
    handlers=proxy)

for post in d.entries:
    print(post["summary"])
コード例 #6
0
    settings = Settings.load_from_file(args.settings)
    # insert default feed for Zoo
    # if not args, just print help
    if len(sys.argv) <= 1:
        parser.print_help()
        return

    # load settings from settings.yaml
    # print("encoding %s" % sys.getdefaultencoding())
    # sys.setdefaultencoding("utf-8")
    # if additional feed urls are in cmd line args, then add it to settings
    if args.urls:
        local_list = args.urls
        settings.urls.extend(local_list)

    # route commands
    process_commands(args, settings)


if sys.platform.startswith('win'):
    import win32console
    oldCodePage = win32console.GetConsoleOutputCP()
    win32console.SetConsoleOutputCP(65001)

main()

try:
    if oldCodePage:
        win32console.SetConsoleOutputCP(oldCodePage)
except NameError:
    pass