小编Pet*_*ood的帖子

什么类型`*`对__vfptr意味着什么?

是的我知道*是一个指针.那不是我在说什么.在我的一个程序中,我有一个断点设置,我注意到在汽车中有一个__vfptr带有值的变量0x000007feed210a00.

但是在类型下,它只是说*就是这样.我程序中的所有其他指针都有类似unsigned char*or some::namespace::Frame*或or的类型int*.这些是有意义的,因为指针直接绑定到特定的类或数据类型.但我不知道*可能是,是否只有普通的指针类型?

编辑:我正在使用Visual Studio 2010.

c++ pointers visual-studio visual-studio-debugging

11
推荐指数
2
解决办法
4196
查看次数

Python:排除模块Pyinstaller

我已经开始在Py2Exe上使用Pyinstaller了.但是我很快就遇到了问题.如何排除我不想要的模块,以及如何查看包含在单个可执行文件中的模块?

我可以在我的Python安装中从DLL文件夹中删除一些pyddll文件,因此Pyinstaller找不到它,因此不包含它们.我真的不想对所有模块这样做,因为它会变得非常艰巨.

我确实尝试编辑Pyinstaller制作的spec文件.

a.binaries - [('ssl','pydoc',)],
Run Code Online (Sandbox Code Playgroud)

但是文件的大小保持不变,所以我得出的结论是没有用.

那么我如何才能看到Pyinstaller包含哪些模块以及如何排除那些我不想要的模块呢?

python pyinstaller

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

如何替换字符串中的制表符?

我需要替换字符串中的制表符,但只需替换制表,而不是空格.

如果我使用str.replace()函数,那么第一组引号会是什么?

python

10
推荐指数
2
解决办法
3万
查看次数

iPython notebook - 配置为在关闭选项卡时关闭内核

在官方网站上说:

打开笔记本时,会自动启动其"计算引擎"(称为内核).关闭笔记本浏览器选项卡,不会关闭内核,而是内核将继续运行,直到明确关闭."

是否可以配置iPython服务器以便内核与相关选项卡一起被终止?

python ipython-notebook

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

如何匹配dateuilts.rrule和python icalendar daylightsavingtime意识到

我正在处理一些琐事.

我有一个ical事件.

BEGIN:VEVENT
UID:Event/termine/gps/akt@portal.augusta.de 
DTSTART;TZID=CET:20150529T190000
DTEND;TZID=CET:20150529T220000
CATEGORIES:Arbeitsgruppe
DTSTAMP:20110620T075538Z
EXDATE;TZID=CET:20151225T190000
LAST-MODIFIED:20150424T201707Z
LOCATION:Vereinsräume des Augsburger Computer Forum e.V.
PRIORITY:5
RRULE:FREQ=MONTHLY;BYDAY=-1FR
SUMMARY:GPS-Arbeitsgruppe
URL:https://www.augusta.de/termine/gps
END:VEVENT
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,每个月的最后一个星期五有一个RRule重复这个事件.

我用icalendar解析了这个ical.

我正在使用:

start = iobj.get( 'DTSTART' ).dt
rrset = rruleset()
rrule = iobj.get( 'RRULE' )
exdate = iobj.get( 'EXDATE' )
rrset.rrule( rrule.rrulestr( rule.to_ical(), dtstart = start ) )
for edate in exdate.dts : 
    rrset.exdate( edate.dt )
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好.

当我尝试下一个说10个日期时:

list(rrset)[:10] 
Run Code Online (Sandbox Code Playgroud)

我明白了:

[datetime.datetime(2015, 5, 29, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>),
 datetime.datetime(2015, 6, 26, 19, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>), …
Run Code Online (Sandbox Code Playgroud)

python icalendar datetime date rrule

8
推荐指数
0
解决办法
537
查看次数

如何知道生成的序列最多只有一定的长度

我想知道生成的序列是否少于2个条目.

>>> def sequence():
...     for i in xrange(secret):
...         yield i
Run Code Online (Sandbox Code Playgroud)

我的低效方法是创建一个列表,并测量其长度:

>>> secret = 5
>>> len(list(sequence())) < 2
True
Run Code Online (Sandbox Code Playgroud)

显然,这会消耗整个发电机.

在我的实际情况中,生成器可以遍历大型网络.我想在不消耗整个发电机或构建大型列表的情况下进行检查.

itertools文档中有一个配方:

def take(n, iterable):
    "Return first n items of the iterable as a list"
    return list(islice(iterable, n))
Run Code Online (Sandbox Code Playgroud)

这只会构建一个最大长度列表n,这是更好的.

所以我可以说:

>>> len(take(2, sequence()) < 2
Run Code Online (Sandbox Code Playgroud)

是否有更多的pythonic,有效的方法来做到这一点?

python generator

8
推荐指数
2
解决办法
178
查看次数

ImportError:无法从“telegram”导入名称“ParseMode”

我正在尝试创建一个电报机器人。我试图执行的代码是:

from telegram import ParseMode
Run Code Online (Sandbox Code Playgroud)

但它抛出了这个错误:

ImportError: cannot import name 'ParseMode' from 'telegram'
(C:\ProgramData\Anaconda3\lib\site-packages\telegram\__init__.py)
Run Code Online (Sandbox Code Playgroud)

您能告诉我如何修复这个错误吗?

python python-3.x telegram python-telegram-bot telegram-bot

8
推荐指数
2
解决办法
1万
查看次数

有与“operator.contains”相对应的吗?

编辑:在下面的讨论之后,我将标题从 更改complement为。converse

在该operator模块中,比较对象的二进制函数采用两个参数。但该contains函数已将它们交换。

我使用运算符列表,例如operator.lt, operator.ge

他们有 2 个参数,a并且b.

我可以说operator.lt(a, b),它会告诉我是否a小于b

但是对于operator.contains,我想知道是否b包含a,所以我必须交换参数。

这是一个痛苦,因为我想要一个统一的界面,这样我就可以有一个用户定义的操作列表来使用(我正在实现类似 Django QL 的东西)。

我知道我可以创建一个交换参数的辅助函数:

def is_contained_by(a, b):
    return operator.contains(b, a)
Run Code Online (Sandbox Code Playgroud)

有没有“标准”的方法来做到这一点?

或者,我可以向后实现所有内容,除了contains. 所以映射ltge等,但这真的很令人困惑。

python

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

os.open vs open,使用什么

我是新来的蟒蛇,看文档,看到有打开文件访问的至少两种方式os.openopen.os.open和之间有什么区别open

我应该什么时候使用os.open

我应该什么时候使用open

python file python-3.x

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

使用Qt进行多处理适用于Windows,但不适用于Linux

我正在使用Qt开发GUI应用程序.

当我尝试QApplication使用multiprocessing以下方法创建另一个时出错:

RuntimeError:QApplication实例已存在

我有一个主窗口,其中包含一个用于生成新进程的按钮,以便我可以创建一个新的GUI实例.基本上是这样的:

from PySide.QtCore import *
from PySide.QtGui import *
import multiprocessing
import sys


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        btn = QPushButton('run new instance')
        btn.clicked.connect(self.create_daemon)
        self.setCentralWidget(btn)

    def create_daemon(self):
        p = multiprocessing.Process(target=new_window)
        p.start()

def new_window():
    app=QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    sys.exit(app.exec_())

if __name__=="__main__":
    app=QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

它适用于Windows但RuntimeError在Linux中提供.这是因为Windows和Linux之间的多处理机制存在差异吗?我怎么能在Linux中实现同样的东西?

python linux pyqt python-multiprocessing

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