小编Odd*_*ing的帖子

FileChooser选择目录,而不是文件

我的代码处理Windows框上的文件夹中的所有文件。我想为用户(碰巧也是我)提供使用标准“文件选择器”对话框选择要处理的文件夹的选项。

我正在尝试使用GetOpenFileName函数来实现此目的。(我实际上是通过pywin32从Python调用它的,但这不相关。)

我可以选择特定的文件,但是看不到任何允许用户选择文件夹的选项。

是否存在我不了解的标志组合,我是完全调用了错误的函数还是执行此操作的另一种习惯?

windows pywin32 filechooser

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

Python的time.sleep - 永远不会醒来

我认为这将是一个简单的,当你看到它的问题,但它让我感到困惑.

[ 停止新闻:我是对的.解决方案被发现.看到答案.]

我正在使用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框架的新手.它是否可以通过重定向日志记录或类似功能来模拟这些症状?

  • 不,我没有替换非标准时间模块!

什么会阻止一个线程醒来?我还错过了什么?

python multithreading deadlock sleep

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

用简单的英语解释这个SQL查询

请用简单的英语解释这个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)

mysql database sql-server

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

中断№13(啊= 48) - 不工作

我想要获取我的硬盘参数.使用此处描述的技术.

代码给出cf = 1(错误).我如何解决它?

x86 assembly interrupt bios

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

这段代码片段做了什么?

题:

给出以下代码段:

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 …

c++ algorithm

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

调用URL时Python中的非ASCII字符语法错误

如何将数据发送到服务器?

例如,我检索了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)

任何人都可以帮我发送数据到服务器吗?

提前致谢

python macos

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

API可以告诉Pylint不要在客户端代码中抱怨吗?

我在可重用的类中有一些代码可以修改某些类型.这是一个简化版本.

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)

python pylint

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

Python file.read()在引擎盖下抓取了不必要的数据

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)

python file strace

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

Boost.PHP可以覆盖核心PHP函数,例如require_once和include吗?

我想有可能使用Boost.PHP来替换一些PHP核心函数逻辑和/或扩展它们.所以我想要的很简单:当一个php脚本调用require_once(dirname(__FILE__) . "/file.php");我希望dirname(__FILE__) . "/file.php"用我的函数接收时,以某种方式创建所需的文件(在我的情况下,转到一些分布式存储),并将该文件返回给PHP解释器,就好像它是需要的一样文件.

是否可以使用Boost.PHP?我怎么能这样做?

php

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

[] .append(foo)成语

编辑补充: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等)

python idioms

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

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

Python字符数

我一直在浏览这个资源中的 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)

python

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