我的代码处理Windows框上的文件夹中的所有文件。我想为用户(碰巧也是我)提供使用标准“文件选择器”对话框选择要处理的文件夹的选项。
我正在尝试使用GetOpenFileName函数来实现此目的。(我实际上是通过pywin32从Python调用它的,但这不相关。)
我可以选择特定的文件,但是看不到任何允许用户选择文件夹的选项。
是否存在我不了解的标志组合,我是完全调用了错误的函数还是执行此操作的另一种习惯?
我认为这将是一个简单的,当你看到它的问题,但它让我感到困惑.
[ 停止新闻:我是对的.解决方案被发现.看到答案.]
我正在使用Python的unittest框架来测试多线程应用程序.很好,很直接 - 我有5个左右的工作线程监视一个公共队列,还有一个生产者线程为它们制作工作项.生产者线程由测试用例触发.
在此测试中,只有一个任务被放入队列中.它在测试中所做的处理只是实际处理的存根,因此工作线程执行5秒睡眠以模拟任务真正完成之前所经过的时间,并且线程将准备好进行另一项任务.
代码片段是:
logging.info("Sleep starting")
time.sleep(5)
logging.info("Waking up")
Run Code Online (Sandbox Code Playgroud)
现在奇怪的部分.我看到"睡眠启动"日志消息,但没有看到唤醒消息.程序锁定并且不响应键盘中断(CTRL + C).CPU负载非常低.
我在Windows和Ubuntu(Python 2.6.2)中看到了同样的问题.
我一直在考虑是否发生异常并被隐藏,所以我在第一行和第二行之间添加"print 1/0" - 我看到提出了Division By Zero错误.我把它移到睡眠后,我从来没有看到过这个消息.
我想"好吧,也许其他线程试图同时记录非常大的东西,它仍在缓冲.它在做什么?"
那么,到目前为止,测试已经返回到unittest,在测试系统状态之前暂停等待线程开始.
logging.info("Test sleep starting")
time.sleep(0.25)
logging.info("Test waking up")
Run Code Online (Sandbox Code Playgroud)
哇,看起来很熟悉.它以完全相同的方式冻结!第一条日志消息出现,第二条消息不出现.
我最近对该单元进行了重大改写,因此我无法声称"我没有触及任何东西",但我在改变中看不出任何不妥之处.
可疑区域:
我包括使用Threading.Lock(因为我不知道如何推理GIL的安全性,所以我坚持我所知道的.我没有看到任何关于我的代码的"僵局".
我是Python的unittest框架的新手.它是否可以通过重定向日志记录或类似功能来模拟这些症状?
不,我没有替换非标准时间模块!
什么会阻止一个线程醒来?我还错过了什么?
请用简单的英语解释这个SQL查询回答的问题:
SELECT SUM(price) FROM Room r, Hotel h
WHERE r.hotelNo = h.hotelNo and hotelName = 'Paris Hilton' and
roomNo NOT IN
(SELECT roomNo FROM Booking b, Hotel h
WHERE (dateFrom <= CURRENT_DATE AND
dateTo >= CURRENT_DATE) AND
b.hotelNo = h.hotelNo AND hotelName = 'Paris Hilton');
Run Code Online (Sandbox Code Playgroud) 我想要获取我的硬盘参数.使用此处描述的技术.
这是显示软盘正常参数的代码:
mov dl,00h
mov ah,08h
int 13h
Run Code Online (Sandbox Code Playgroud)这是代码,显示硬盘的无效参数(可能是我的硬盘空间很大(LBA)):
mov dl,80h
mov ah,08h
int 13h
Run Code Online (Sandbox Code Playgroud)我写了这段代码:
mov dl,80h
mov ah,48h
int 13h
Run Code Online (Sandbox Code Playgroud)代码给出cf = 1(错误).我如何解决它?
题:
给出以下代码段:
bool foo(int n) {
for(int i=3;i<sqrt(n)+0.5;i+=2)
{
if((n%i)==0){
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
你能弄清楚函数foo的目的是什么吗?
嗯,首先看起来似乎foo正在检查素数但事实并非如此.我写了一个小测试程序并得到了这个输出:
对于1到100之间的这些数字,foo返回true:
1 2 3 4 5 6 7 8 10 11 13 14 16 17 19 20 22 23 26 28 29 31 32 34 37 38 41 43 44 4 6 47 52 53 58 59 61 62 64 67 68 71 73 74 76 79 82 83 86 88 89 92 94 97
对于1到100之间的这些数字,foo返回false:
9 12 15 18 21 …
如何将数据发送到服务器?
例如,我检索了MAC地址,所以我想发送到服务器(例如http://211.21.24.43:8080/data?mac=00-0C-F1-56-98-AD)
我在互联网上找到了这个片段:
from urllib2 import Request, urlopen
from binascii import b2a_base64
def b64open(url, postdata):
req = Request(url, b2a_base64(postdata), headers={'Content-Transfer-Encoding': 'base64'})
return urlopen(req)
conn = b64open("http://211.21.24.43:8080/data","mac=00-0C-F1-56-98-AD")
Run Code Online (Sandbox Code Playgroud)
但当我运行它时,我得到:
File "send2.py", line 8
SyntaxError: Non-ASCII character '\xc3' in file send2.py on line 8, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我发送数据到服务器吗?
提前致谢
我在可重用的类中有一些代码可以修改某些类型.这是一个简化版本.
class Foo:
def __init__(self):
self.count = 0
def increment(self):
self.count += 1
# Add another method outside of the class definition.
# Pylint doesn't care about this, and rates this file 10/10.
Foo.__dict__["current_count"] = lambda self: self.count
Run Code Online (Sandbox Code Playgroud)
在实际代码中,"current_count"是一个变量,而不是一个固定的字符串,这就是为什么我没有写:
Foo.current_count = lambda self: self.count # Cannot do in my scenario.
Run Code Online (Sandbox Code Playgroud)
现在,当我的客户来使用新功能时,Pylint惊恐地跳起来.
import server_api
def main():
foo_count = server_api.Foo()
foo_count.increment()
print foo_count.current_count()
# Pylint complains here:
# E1101: 8:main: Instance of 'Foo' has no 'current_count' member
# I don't want to …Run Code Online (Sandbox Code Playgroud) cat file_ro.py
import sys
def file_open(filename):
fo=open(filename,'r')
fo.seek(7)
read_data=fo.read(3)
fo.close()
print read_data
file_open("file.py")
Run Code Online (Sandbox Code Playgroud)
但斯特雷斯说
readlink("file_ro.py", 0x7fff31fc7ea0, 4096) = -1 EINVAL (Invalid argument)
getcwd("/home/laks/python", 4096) = 18
lstat("/home/laks/python/file_ro.py", {st_mode=S_IFREG|0755, st_size=150, ...}) = 0
stat("file_ro.py", {st_mode=S_IFREG|0755, st_size=150, ...}) = 0
open("file_ro.py", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=150, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa671a6c000
fstat(3, {st_mode=S_IFREG|0755, st_size=150, ...}) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "import sys\ndef file_open(filenam"..., 128) = 128
read(3, "ile_open(\"file.py\")\n\t\n", 4096) = 22
close(3) …Run Code Online (Sandbox Code Playgroud) 我想有可能使用Boost.PHP来替换一些PHP核心函数逻辑和/或扩展它们.所以我想要的很简单:当一个php脚本调用require_once(dirname(__FILE__) . "/file.php");我希望dirname(__FILE__) . "/file.php"用我的函数接收时,以某种方式创建所需的文件(在我的情况下,转到一些分布式存储),并将该文件返回给PHP解释器,就好像它是需要的一样文件.
是否可以使用Boost.PHP?我怎么能这样做?
编辑补充:Drat it!我没有最新版本的代码.这是一个错误,他修复了它.请和我一起投票结束.
我正在看别人的Python代码,上面写着:
bar = [].append(foo)
Run Code Online (Sandbox Code Playgroud)
我认为这是一种过于复杂的说法:
bar = [foo]
Run Code Online (Sandbox Code Playgroud)
我想知道他是否只是对Python语法一无所知,但通常他的Python代码似乎非常称职,而且在代码的另一个地方,他写道:
qux(param=[foo])
Run Code Online (Sandbox Code Playgroud)
所以,这并不能解释它.
我错过了什么吗?这是一个我不知道的有用的成语吗?(例如,它更高性能,适用于旧版本的Python等)
public void CardToPile() {
waste.push(reserve.pop);
}
Run Code Online (Sandbox Code Playgroud) 我一直在浏览这个资源中的 python教程.以下代码中的所有内容都非常清楚,它会计算字符数.只有我不理解的部分是计数分配到列表并乘以120的部分.任何人都可以用简单的英语解释这个目的是什么.
def display(i):
if i == 10: return 'LF'
if i == 13: return 'CR'
if i == 32: return 'SPACE'
return chr(i)
infile = open('alice_in_wonderland.txt', 'r')
text = infile.read()
infile.close()
counts = 128 * [0]
for letter in text:
counts[ord(letter)] += 1
outfile = open('alice_counts.dat', 'w')
outfile.write("%-12s%s\n" % ("Character", "Count"))
outfile.write("=================\n")
for i in range(len(counts)):
if counts[i]:
outfile.write("%-12s%d\n" % (display(i), counts[i]))
outfile.close()
Run Code Online (Sandbox Code Playgroud)