小编But*_*840的帖子

当密钥未知时从字典中删除项目

按值从字典中删除项目的最佳方法是什么,即项目的密钥未知时?这是一个简单的方法:

for key, item in some_dict.items():
    if item is item_to_remove:
        del some_dict[key]
Run Code Online (Sandbox Code Playgroud)

还有更好的方法吗?在迭代它时从字典中变异(删除项目)有什么问题吗?

python dictionary

109
推荐指数
6
解决办法
23万
查看次数

Python中快速简便的文件对话框?

我有一个简单的脚本,它解析文件并将其内容加载到数据库.我不需要UI,但是现在我提示用户使用raw_input哪个文件解析最不友好,特别是因为用户无法复制/粘贴路径.我想快速简便地向用户呈现文件选择对话框,他们可以选择文件,然后将其加载到数据库.(在我的用例中,如果他们碰巧选择了错误的文件,它将无法解析,即使它被加载到数据库也不会有问题.)

import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()
Run Code Online (Sandbox Code Playgroud)

这段代码接近我想要的,但它留下一个恼人的空框架打开(无法关闭,可能是因为我没有注册一个关闭事件处理程序).

我不必使用tkInter,但由于它在Python标准库中,因此它是最快和最简单的解决方案的良好候选者.

什么是在没有任何其他UI的情况下在脚本中提示文件或文件名的快速简便方法?

python openfiledialog

91
推荐指数
7
解决办法
19万
查看次数

如何迭代和修改Java集?

假设我有一组整数,我想增加集合中的每个整数.我该怎么做?

我是否允许在迭代时添加和删除集合中的元素?

我是否需要创建一个新的集合,我将"复制和修改"元素,而我正在迭代原始集合?

编辑:如果集合的元素是不可变的怎么办?

java set

78
推荐指数
2
解决办法
27万
查看次数

如何在像meld,kdiff3等差异查看器中查看`git show`的输出

有许多SO问题显示如何git diff在差异查看器中查看命令的输出,如使用git difftool或其他方式.我不是在问git diff.

我想git show <previous commit sha1>在像diff这样的差异查看器中看到输出.我怎样才能做到这一点?

git version-control diff dvcs

38
推荐指数
4
解决办法
9589
查看次数

如何在Python的调试器中查看异常的详细信息?

有时在我调试异常时会引发异常.

例如,考虑以下代码:

def some_function():  # Pretend this function is in a library...
    # ...and deep within the library is an exception:
    raise Exception('An exception message with valuable information.')

import pdb; pdb.set_trace()
try:
    some_function()  # Pretend I am debugging from this point using pdb.
except:
    pass
Run Code Online (Sandbox Code Playgroud)

some_function()调用调试时,如果我发出next命令,我将看到有关引发[和捕获]的异常的以下详细信息:

Exception: Exceptio...ation.',)
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的终端的直接复制/粘贴:

> /tmp/test.py(7)<module>()
-> some_function()  # Pretend I am debugging from this point using pdb.
(Pdb) next
Exception: Exceptio...ation.',)
> /tmp/test.py(7)<module>()
-> some_function()  # Pretend I am debugging …
Run Code Online (Sandbox Code Playgroud)

python debugging

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

使用pythons strftime显示日期,如"5月5日"?

可能重复:
Python:日期序数输出?

在Python中,time.strftime可以很容易地产生类似"星期四5月05"的输出,但是我想生成一个像"星期四5月5日"这样的字符串(注意日期的附加"th").做这个的最好方式是什么?

python strftime

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

在Python中,object()是否等于除了它自己之外的任何东西?

如果我有my_object = object()Python中的代码,my_object除了它自己将等于什么?

我怀疑答案在于__eq__返回的默认对象的方法object().__eq__这个默认对象的实现是什么?

编辑:我正在使用Python 2.7,但我也对Python 3的答案感兴趣.请澄清您的答案是否适用于Python 2,3或两者.

python

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

在Flask(WSGI)中使用全局单例,我是否必须担心竞争条件?

Flask的hello world演示是:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)

如果我这样修改了怎么办:

from flask import Flask
app = Flask(__name__)

a = 1
b = 2
c = 3

@app.route("/")
def hello():
    a += 1
    b += a
    c += b
    return "Hello World!"

if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)

我理解WSGI应用程序可能有多个线程.该hello函数可以同时在多个线程上运行,然后我们就会遇到竞争条件.它是否正确?如果上面的代码不是线程安全的,我该怎么做才能使它的线程安全?

避免全局变量是一种可能的解决方案,但是你总能避免使用全局变量吗?如果我想要类似python对象缓存的内容怎么办?

python wsgi thread-safety race-condition flask

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

如何使用源代码管理管理同一项目的开源和商业版本?

我们正在开发一个开源项目,我们正在使用Mercurial进行源代码管理控制.此项目的Mercurial存储库是公共的(我们使用的是Bitbucket).

现在我们有一个客户,我们需要为他们定制我们的开源软件.这些自定义必须保持私有,因此我们可能需要为此客户端创建一个新的Hg存储库; 这个新的存储库将是私有的.

但问题是我们需要[不时]将开放存储库中的更改(例如新功能或错误修复)合并到我们的私有存储库中.

实现这一目标的最佳方法是什么?我读到可以合并两个或多个Mercurial存储库,但历史记录将丢失.由于许多冲突,合并也可能是痛苦的.如果我们将来再获得更多客户,我们应该如何管理他们的存储库呢?我们应该使用一个存储库和多个分支吗?如果两个项目版本开始向不同的方向发展,两个存储库变得越来越不同怎么办?

请分享您的经验.

提前致谢!

git version-control mercurial repository bitbucket

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

在Python中,如何将int和字符串列表转换为Unicode?

x = ['Some strings.', 1, 2, 3, 'More strings!', 'Fanc\xc3\xbf string!']
y = [i.decode('UTF-8') for i in x]
Run Code Online (Sandbox Code Playgroud)

将x中的字符串转换为Unicode的最佳方法是什么?执行列表压缩会导致属性error(AttributeError: 'int' object has no attribute 'decode'),因为int没有解码方法.

我可以尝试使用for循环吗?或者我可以在列表压缩中进行一些显式类型检查,但是使用像Python这样的动态语言进行类型检查是正确的方法吗?

更新:

我宁愿int仍然是int.虽然这不是一个严格的要求.我的理想输出是[u'Some strings.', 1, 2, 3, u'More strings!', u'Fancÿ string!'].

python unicode

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