小编pie*_*636的帖子

Unicode转义文件处理错误

我有一个原始文本文件,只包含以下行,没有换行符:

Q853 \u0410\u043D\u0434\u0440\u0435\u0439 \u0410\u0440\u0441\u0435\u043D\u044C\u0435\u0432\u0438\u0447 \u0422\u0430\u0440\u043A\u043E\u0432\u0441\u043A\u0438\u0439
Run Code Online (Sandbox Code Playgroud)

如上所示转义字符,这意味着它\u05E9实际上是反斜杠,后跟5个字母数字字符(而不是Unicode字符).我正在尝试使用以下代码解码文件:

import codecs

with codecs.open("wikidata-terms20.nt", 'r', encoding='unicode_escape') as input:
    with open("wikidata-terms3.nt", "w") as output:
        for line in input:
            output.write(line)
Run Code Online (Sandbox Code Playgroud)

print此处无法使用,请参阅注释.

运行它会给我以下错误:

Traceback (most recent call last):
  File "terms2.py", line 5, in <module>
    for line in input:
  File "C:\Program Files\Python35\lib\codecs.py", line 711, in __next__
    return next(self.reader)
  File "C:\Program Files\Python35\lib\codecs.py", line 642, in __next__
    line = self.readline()
  File "C:\Program Files\Python35\lib\codecs.py", line 555, in readline
    data = self.read(readsize, firstline=True)
  File "C:\Program Files\Python35\lib\codecs.py", line 501, in …
Run Code Online (Sandbox Code Playgroud)

python unicode python-3.x python-unicode

5
推荐指数
1
解决办法
94
查看次数

PyQt QProgressDialog 显示为一个空的白色窗口

我有一个简单的程序,我想要一个远程更新的模态、非阻塞进度窗口(使用 QProgressDialog)。SIZE简单地控制 QProgressDialog 的最大值。但是,如果我将其设置为 4 或更小的值,则在整个操作期间窗口看起来像这样:

在此处输入图片说明

换句话说,窗口是完全白色的,不显示任何文本和进度条。如果我将 的值设置SIZE为 5 或更多,则显示工作正常,但仅在 2-3 次第一次迭代之后:

在此处输入图片说明

然后

在此处输入图片说明

import sys, time
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

SIZE = 5

def doGenerate(setValue):
    for x2 in range(SIZE):
        time.sleep(1)
        setValue(x2 + 1)
    print('Done')


class MainMenu(QMainWindow):
    def __init__(self):
        super().__init__()

        self.genAudioButton = QPushButton('Generate', self)
        self.genAudioButton.clicked.connect(self.generate)

        self.setCentralWidget(self.genAudioButton)
        self.show()

    def generate(self):
        try:
            progress = QProgressDialog('Work in progress', '', 0, SIZE, self)
            progress.setWindowTitle("Generating files...")
            progress.setWindowModality(Qt.WindowModal)
            progress.show()
            progress.setValue(0)
            doGenerate(progress.setValue)
        except Exception as e: …
Run Code Online (Sandbox Code Playgroud)

python modal-dialog pyqt nonblocking pyqt5

4
推荐指数
1
解决办法
5207
查看次数

从开发人员工具中访问IIFE变量

让我先说一下,我知道它不是以编程方式从外部访问IIFE的内部变量,除非它们已被全局范围访问.

例如:

(function() {
    var a = "Hello"; // a isn't accessible from the outer scope
)();

console.log(a); // a is undefined
Run Code Online (Sandbox Code Playgroud)

但:

(function() {
    var a = "Hello";
    global.a = a;
)();

console.log(a); // Displays "Hello"
Run Code Online (Sandbox Code Playgroud)

在某些情况下,IIFE可能会持续执行几秒钟,或者在整个页面浏览期间,通常是在用JavaScript编写的游戏中,IIFE将包含游戏循环.

因此,IIFE中声明的所有变量和函数必须存在于浏览器内存中,但由于封装,它们无法从开发人员控制台显示.

我的问题是:有没有什么方法可以显示或操作它们,而不是先前修改代码,而它正在运行?由于这些变量存在于内存中并被使用?也许是通过某种调试?

我的问题主要针对Firefox和Chrome(Firebug和开发人员工具),但如果有一般方法可以使用它.

javascript developer-tools iife

1
推荐指数
1
解决办法
340
查看次数