小编Len*_*bro的帖子

什么是一个更好的替代namedtuples _replace?

拿这个代码:

>>> import urlparse
>>> parts = urlparse.urlparse('http://docs.python.org/library/')
>>> parts = parts._replace(path='/3.0'+parts.path)
Run Code Online (Sandbox Code Playgroud)

parts._replace works但由于它是一个强调的方法,它应该是内部的,而不是使用.还有其他选择吗?我不想这样做:

>>> parts = parts[:2] + ('/3.0'+parts.path,) + parts[3:]
Run Code Online (Sandbox Code Playgroud)

因为这使它成为一个普通的元组,而不是一个命名元组,并且做:

>>> parts = namedtuple(scheme=parts.scheme, netloc=parts.netloc, etc etc)
Run Code Online (Sandbox Code Playgroud)

有点愚蠢.:)

想法?

python namedtuple

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

解析JSON数据时出错

我想根据纬度和经度从Google地球获取高程数据,但我无法做到这一点.我不确定我做错了什么,但我的代码如下所示.

def getElevation(locations,sensor="true", **elvtn_args):
    elvtn_args.update({
        'locations': locations,
        'sensor': sensor
    })

    url = ELEVATION_BASE_URL
    params =  urllib.parse.urlencode(elvtn_args)
    baseurl = url +"?"+ params;
    req = urllib.request.urlopen(str(baseurl));
    response = simplejson.load(req);
Run Code Online (Sandbox Code Playgroud)

而我得到的错误是:

Traceback (most recent call last):
  File "D:\GIS\Arctools\ElevationChart - Copy.py", line 85, in <module>
    getElevation(pathStr)
  File "D:\GIS\Arctools\ElevationChart - Copy.py", line 45, in getElevation
    response = simplejson.load(req);
  File "C:\Python32\lib\json\__init__.py", line 262, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\Python32\lib\json\__init__.py", line 307, in loads
    return _default_decoder.decode(s)
  File "C:\Python32\lib\json\decoder.py", line 351, in decode
    obj, end = self.raw_decode(s, …
Run Code Online (Sandbox Code Playgroud)

python google-api google-earth python-3.x

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

如何避免我发送的电子邮件不被归类为垃圾邮件?

我正在运营一个可以向其他人发送邀请的网站,我遇到了一个问题,即从我的网站发送的电子邮件都被归类为主要电子邮件服务提供商中的垃圾邮件,我只是想知道如何尽可能地避免这种情况.

基本上我现在在做什么:

1)用户输入朋友的电子邮件

2)我使用python发送电子邮件,电子邮件很简单 - 纯文本,只是一行文字告诉别人你的朋友邀请你,并且网站为他创建了一个帐户,密码为**

3)电子邮件的"发件人"是发送邀请的用户(我想知道这是否有助于垃圾邮件?),而不是我网站的电子邮件.

谢谢.箱子

email spam

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

公开C字符串而不复制到python 3.x代码

我有一个用cython编写的库,它包装了一个C库,我将一些c字符串暴露给python代码.这些字符串很大,而且是静态的(不能释放它们)所以只是从它们那里制作一个python字符串(这就是副本)不是一个选项 - 我得到了OOM错误.

我有代码工作python 2.x目前使用旧的缓冲API,看起来或多或少像:

def get_foo():
     return PyBuffer_FromMemory(c_foo_ptr,c_foo_len)
Run Code Online (Sandbox Code Playgroud)

这对于python 2.x来说是有效的(tm),但是旧的缓冲API在3.x中消失了,我无法弄清楚如何使用新的缓冲API.

我看到PyMemoryView_FromBufferPyBuffer_FillInfo结合起来应该做同样的事情,但PyBuffer_FillInfo想要一个对我来说不存在的对象(它只是一个模块级函数),制作一个虚拟对象并传递它只是给了我一个段错误,所以我想这个对象应该以某种方式支持缓冲区......但它的文档记录在哪里?

进一步尝试使用内存视图,它们根本不会看起来或充当字符串(或字节),因此我必须重写所有的python代码或以某种方式重新创建该功能.

我错过了什么吗?有没有一种简单的方法来替换py3k中的PyBuffer_FromMemory?

注意:我正在使用cython,但这是原始c-api的东西,所以你可以在不涉及cython的情况下回答它.

python api python-3.x

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

如何在python3.3中将字节写入stdout

名为== a.py ==的测试文件

import os

if __name__ == '__main__':
    for x in range(0,1000):
        try:
            os.sys.stdout.buffer.write(b"hello\r\n")
            os.sys.stdout.buffer.flush()
        except OSError:
            pass
Run Code Online (Sandbox Code Playgroud)

它独自运行时没关系.但以下情况有问题:

  1. 运行python a.py | 更多
  2. 按ctrl + c退出

然后我在<_io.TextIOWrapper name =''mode ='w'coding ='cp936'>忽略了Exception OSError:OSError(22,'Invalid argument')

我已经在os.sys.stdout.buffer操作中捕获了OSError,但它仍然出错.

如果我不使用os.sys.stdout.buffer.flush,那么没有错误消息.如果我只使用print(),一切都OK.

那么如何正确地将字节写入stdout呢?

我使用的是Windows 7 64位和Python 3.3.0 32位.

python python-3.x

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

在使用try和except语句赋值之前引用的局部变量

我在try和except语句中遇到一些问题,我有一个条目小部件,它接受字符串输入,但我有代码,后来将它转换为整数,问题是如果用户输入类似文本的东西,它会抛出这样的错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.2/tkinter/__init__.py", line 1402, in __call__
    return self.func(*args)
  File "/home/ppppwn3d/workspace/Python/JailBreakBob/JailBreakBob.py", line 157, in buttonclick_gamescreen
    entryx = int(e1.get())
ValueError: invalid literal for int() with base 10: 'abc'
Run Code Online (Sandbox Code Playgroud)

所以我想用try和except语句隐藏错误但我现在得到另一条错误消息.

这就是它在代码中的样子.

    while pressed == 8 :
        try:
            entryx = int(e1.get())
            entryy = int(e2.get())
        except ValueError:
            print("text")

        answerx = answerlistx[randomimage]
        answery = answerlisty[randomimage]

        if entryx == answerx and entryy == answery
            canvas.delete(images)
            randomimage = random.randrange(0,49+1)
            scorecounter = scorecounter + 1
            game = PhotoImage(file=imagelist[randomimage])
            images …
Run Code Online (Sandbox Code Playgroud)

python try-catch

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

使用多个参数在Tornado HttpGet中传递一个参数

我想在Url中传递一个参数(更新我的URL包含的许多参数之一),如下所示:

httpGet.setURI(new URI(url/user?"nickname"="John") 
Run Code Online (Sandbox Code Playgroud)

Python中的ServerSide:

class GetInfo(BaseHandler):
  def Get(self):
        nickname = self.get_argument("nickname")
        gender = self.get_argument("gender")
        logging.info(nickname)
        logging.info(gender)

  application = tornado.web.Application([
  (r"/", MainHandler),
  (r"/user", GetInfo),
  ])
Run Code Online (Sandbox Code Playgroud)

服务器告诉我,我不能这样做,因为缺少参数"性别".我能怎么做?

谢谢

python android http-get tornado http-post

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

父子进程之间的通信

我试图创建一个具有一个或多个子进程的Python 3程序.

Parent进程生成子进程,然后继续自己的商业,然后我想发送一条消息给特定的子进程,捕获它并采取行动.

此外,子进程在等待消息时需要非锁定,它将运行一个自己的循环来保证服务器连接并将任何已接收的消息发送给父进程.

我目前正在寻找python中的多处理,线程,子进程模块,但一直无法找到任何解决方案.

我想要实现的是让程序的主要部分与用户交互,处理用户输入并向用户呈现信息.这将与来自不同服务器的子部件进行异步,从服务器回收消息并从用户向服务器发送正确的消息.然后,子进程将信息发送回主要部分,并将其提交给用户

我的问题是:

  1. 我是以错误的方式去做这件事
  2. 哪个模块最好用
    2.1如何设置它

python multithreading python-3.x

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

我的 Django 模型中 &lt;model&gt;_set 来自哪里?

我正在浏览 Django 教程:https://docs.djangoproject.com/en/dev/intro/tutorial01/

我正在查看将 python shell 与 manage.py 一起使用的示例。代码片段是从网站复制的:

    # Give the Poll a couple of Choices. The create call constructs a new
# Choice object, does the INSERT statement, adds the choice to the set
# of available choices and returns the new Choice object. Django creates
# a set to hold the "other side" of a ForeignKey relation
# (e.g. a poll's choices) which can be accessed via the API.
>>> p = Poll.objects.get(pk=1)

# Display any …
Run Code Online (Sandbox Code Playgroud)

python django

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

如何使用pyqgis在shape文件中添加功能?

我现在有一个形状文件,我想添加值来填充它的颜色

但现在我有一个问题

http://www.qgis.org/pyqgis-cookbook/vector.html#add-features

 feat = QgsFeature()
  feat.addAttribute(0,"hello")
  feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(123,456)))
  (res, outFeats) = layer.dataProvider().addFeatures( [ feat ] )
Run Code Online (Sandbox Code Playgroud)

这是点的示例,现在我有多边形和折线

我想知道我是否有多边形如何添加功能到我用python选择的形状文件?

python qgis

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