小编jap*_*hyr的帖子

在Python中使用None作为字典键是否合理?

似乎没有一个作为字典键,但我想知道这是否会导致以后的麻烦.例如,这有效:

>>> x={'a':1, 'b':2, None:3}
>>> x
{'a': 1, None: 3, 'b': 2}
>>> x[None]
3
Run Code Online (Sandbox Code Playgroud)

我正在使用的实际数据是教育标准.每个标准都与内容区域相关联.一些标准也与内容子区域相关联.我想创建一个嵌套的表单字典{contentArea:{contentSubArea:[standards]}}.其中一些contentSubArea键将为None.

特别是,我想知道如果我找到一个在某些时候不存在的密钥,或者像这样的意外事件,这是否会导致混淆.

python dictionary key

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

如何从Python脚本中杀死SimpleHTTPServer?

我试图用来http.server测试Python项目中的所有链接.如果我在运行脚本之前启动服务器,我可以让我的脚本工作,然后当我关闭终端窗口时服务器停止.但我真的很喜欢脚本本身启动和停止服务器.

我制作了一个测试脚本,只需启动服务器,获取页面并证明服务器正在运行,然后停止服务器.我似乎无法得到服务器的pid.当我尝试在脚本运行后杀死此脚本报告的pid时,我收到一条消息,表明没有这样的进程; 但服务器仍在运行.

如何获取服务器的正确pid,或者更一般地说如何从脚本中停止服务器?

import os
import requests
from time import sleep

# Start server, in background.
print("Starting server...")
os.system('python -m http.server &')
# Make sure server has a chance to start before making request.
sleep(1)

print "Server pid: "
os.system('echo $$')

url = 'http://localhost:8000/index.html'
print("Testing request: ", url)
r = requests.get(url)
print("Status code: ", r.status_code)
Run Code Online (Sandbox Code Playgroud)

python simplehttpserver python-requests

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

Django:将对象用作字典键是否合理?

在django中使用对象作为字典的键是否合理?我这样做了,它的确有效.但我想知道这是不是最好的做法,或者是否会造成我现在还没有预见到的困难.

我正在研究一个处理教育标准的项目.我的字典有一个结构{Subject:[Standards]}.主题的模型看起来像:

class Subject(models.Model):
  subject = models.CharField(max_length=255, unique=True)

  def __unicode__(self):
    return self.subject
Run Code Online (Sandbox Code Playgroud)

是否可以使用此模型中的对象作为我的词典的键,或者我应该使用字符串表示,例如Subject.subject?

如果是这样,unicode方法会影响这个吗?当我尝试使用Subject.subject作为键时,我得到了像{u'Math': [<Subject: Students can perform calculations.>]} 使用对象作为键的东西,它看起来像{<Subject: Math>: [<Standard: Students can perform calculations.>]}

这是我昨天问过的关于使用None作为字典键的问题的后续内容.

python django dictionary key

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

在ReportLab中向canvas元素添加超链接的最简单方法是什么?

我正在使用ReportLab使用Python制作pdf.我想在画布上添加一个形状,并将该形状作为超链接.在以下示例中将矩形设为google.com的最简单方法是什么?

from reportlab.pdfgen import canvas
from reportlab.lib.units import inch

c = canvas.Canvas("hello.pdf")

# move the origin up and to the left, draw square
c.translate(inch,9*inch)
# How do I make this rectangle link to google.com?
c.rect(inch,inch,1*inch,1*inch, fill=1)

c.showPage()
c.save()
Run Code Online (Sandbox Code Playgroud)

python canvas reportlab hyperlink

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

使用Python 3.3的virtualenv中的IPython Notebook

我已经设置了我的Ubuntu 12.04系统,这样我就可以使用Python 2.7或Python 3.3创建virtualenv,并运行IPython Notebook.问题是,我不知道我对我的系统做了什么让这成为可能.我试图帮助其他人以相同的方式设置他们的系统,我不确定我缺少什么包.

在我的系统上,我可以运行以下命令,以便在virtualenv中运行IPython Notebook:

~$ mkdir test_ipython3.3
~$ cd test_ipython3.3
~/test_ipython3.3$ virtualenv -p python3.3 venv
~/test_ipython3.3$ source venv/bin/activate
(venv)~/test_ipython3.3$ pip install ipython[all]==1.1.0
Run Code Online (Sandbox Code Playgroud)

我可以使用相同的命令集virtualenv -p python2.7 venv,并且除了运行Python 2.7之外,它具有几乎相同的环境.

我试图在virtualbox设置上安装12.04,这样我也可以成功运行这些命令,但是我一直都在失败.在virtualbox中构建一个干净的Ubuntu 12.04计算机后,我执行以下操作:

# Update machine:
sudo apt-get update
sudo apt-get dist-upgrade

# Install Python 3.3:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:fkrull/deadsnakes    
sudo apt-get update    
sudo apt-get install python3.3

# Install virtualenv
sudo apt-get install python-pip
sudo pip install pip --upgrade
sudo pip install virtualenv

# Install necessary …
Run Code Online (Sandbox Code Playgroud)

python ubuntu virtualenv ipython python-3.x

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