胜博发游戏官网PIL无法修改8位BMP灰度图的数据

( 胜博发游戏官网 )

im = Image.open("grayscale.bmp")
data = im.load()
data[1,1] = 1

报错”ValueError: image is readonly”。只有8位BMP灰度图会出现这种问题,其他图像都正常。这是为什么?而且8位灰度图竟然没有调色板,im.getpalette()返回None

试试将mode 改成rgb先?

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机python 下 import 模块使用相对路径

( SBF胜博发娱乐老虎机 )

当目录结构是这样时:

- /
  |-- wsgi.py
  `-- /app
     |-- mod1.py
     `-- __init__.py # 空文件

在 wsgi.py 可以使用 from sub.mod1 import * 导入模块 mod1 的内容。那么,当目录结构为下面这样时:

- /
  |-- wsgi.py
  |-- /app
  |  |-- mod1.py
  |  `-- __init__.py # 空文件
  `-- /app2
     |-- mod2.py
     `-- __init__.py # 空文件

mod2 如何导入 mod1 中的内容?

推荐的做法是:

from ..app import mod1

想了解更多请参考 PEP 328

你的例子里,appapp2是不同的modulemodule之间import的时候,要用sys.path.append将被importmodule的路径加入到sys.path

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

胜博发游戏官网Flask 中,怎样组织大量的视图函数?

( 胜博发游戏官网 )

由于程序越来越大,所有的视图函数都写在一个文件里,1k多行了,修改起来不方便。
不知道应该怎样把这些视图函数分散到不同的文件里?

对于大量的views我倾向于使用flask的blueprint来实现对view的分类整理,将功能一致的view放在一个文件里面

创建一个user.py:

from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound

mod = Blueprint('user', __name__,
                        template_folder='templates')

@mod.route('/user/home/')
def home():
    pass

@mod.route('/user/setting/')
def setting():
    pass

在app.py里面这么写:

from flask import Flask
import myapp.user

app = Flask(__name__)
app.register_blueprint(user.mod)

蓝图还有更加复杂的设置以及用法,你可以参考官方文档:http://flask.pocoo.org/docs/blueprint…

这个链接讲了把基于函数的view转换成基于class的view

不过其实你也可以直接把函数的view分散到文件里,因为注册url路由的副作用是在app.route里的进行的,跟你的函数在哪个模块没关系

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机使用setup.py方式安装的包该如何卸载

( SBF胜博发娱乐老虎机 )

我用 python setup.py install 安装了一些第三方包,现在想删除这些包,手动删除了site-package下的一些文件,但是好像删不干净,不知道该如何正确的删除呢?

只能手工移除安装的文件,如果你不知道这个安装程序做了什么,可以用--record重新安装一次:python setup.py install --record files.txt

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

sbf胜博发娱乐城Python有那些单元测试框架可以用?

( sbf胜博发娱乐城 )

Java有JUnit,C#有NUnit,C++有C++Unit。。。Python有那些UnitTest Framework?

py.test unittest nose doctest,还有很多,今年也新兴了几个。

不过我的建议是,最近的方向是nose , 你可以从github上看到大家用的比较多的是unittest(传统的测试框架,写起来比较罗嗦)和nose(test开头的函数,类,module视作测试), 也有人用doctest, 个人觉得doctest 把测试和app的代码混在一器很不好。(不过也有人说doctest这样彰显了python的一个优良作风:代码即文档)

最流行的有unittest和nose
其他的请看http://wiki.python.org/moin/PythonTes… 中Unit Testing Tools部分

针对于写UT的都是好孩子。。。合格的程序员

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

胜博发游戏官网python smtp模块发送邮件显示乱码的问题,smtp模块文本编码的选择

( 胜博发游戏官网 )

我用python的smtp模块登陆QQ邮箱发邮件给用户,邮件内容和标题都是UTF-8编码,并且在MIME中设置了Content-Type为text/html;charset=utf-8
问题重现:用户收到的邮件大部分是乱码,QQ邮箱显示正常,163系乱码,大部分企业自用邮箱估计也是乱码
问题定位:请问在smtp模块中怎样选择编码?
经测试python的smtp不能发送unicode(对UTF8文本进行decode)
自助:在163中可以手动切换为utf8编码,这样可以正确显示,考虑到163的默认编码为GB2312,我把邮件内容和标题改为GB2312编码后发到163,但依旧是乱码

请问大家有没有类似的经验可以分享一下?

备注:
1.smtp的server是QQ企业邮箱
2.感谢theo的回答,但是对我貌似没起作用
3.补上我的原代码:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
server = smtplib.SMTP()
server.connect('smtp.exmail.qq.com', '25')
server.login('myemail@qq.com', 'passwd')
msg = MIMEMultipart('alternative')
msg = MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = 'myemail@qq.com'
msg['To'] = sendTo
msg.attach(MIMEText(htmlBody, 'html', 'utf-8'))
server.sendmail('myemail@qq.com', 'target@fac.com', msg.as_string())

根据theo的回答,应该在最后一行处改为msg.as_string().encode(‘ascii’)
但是会报错,无法decode和encode

Working example,主要是创建MIME对象,使用utf-8编码:

# -*- coding: utf-8 -*-

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

SERVER = 'localhost'
FROM = 'blah@blah.com'
TO = ['blah2@blah.com']

SUBJECT = u'测试UTF8编码'
TEXT = u'ABCDEFG一二三四五六七'

msg = MIMEMultipart('alternative')
# 注意包含了非ASCII字符,需要使用unicode
msg['Subject'] = SUBJECT
msg['From'] = FROM
msg['To'] = ', '.join(TO)
part = MIMEText(TEXT, 'plain', 'utf-8')
msg.attach(part)

server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, msg.as_string().encode('ascii'))
server.quit()

# -*- coding: utf-8 -*-

import smtplib

mail_server="smtp.exmail.qq.com"
mail_user="web@test.com"
mail_psw="psw"
mail_port=465
def sendMail(content,subject="subject",send_to="user@test.com"):
  server = smtplib.SMTP_SSL()
  server.connect(mail_server, mail_port)
  server.login(mail_user,mail_psw)
  msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s"% (mail_user, send_to,subject,content))
  server.sendmail(mail_user, send_to, msg)

if __name__ == "__main__":
  sendMail("test send mail测试中文")

python 2.7下测试可以正常接收

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机python如何将字符串转换成字典dict类型

( SBF胜博发娱乐老虎机 )

如题,有下列字符串:

user = "{'name' : 'jim', 'sex' : 'male', 'age': 18}"

如何将字符串转化成字典dict类型?

用eval()或exec()函数实现:

>>> user
"{'name' : 'jim', 'sex' : 'male', 'age': 18}"
>>> b=eval(user)
>>> b
{'age': 18, 'name': 'jim', 'sex': 'male'}
>>> exec("c="+user)
>>> c
{'age': 18, 'name': 'jim', 'sex': 'male'}

这是典型的 JSON 格式,最好使用simplejson把JSON转化为Python内置类型
可以这样使用:
JSON到字典转化:
ret_dict = simplejson.loads(json_str)
字典到JSON转化:
json_str = simplejson.dumps(dict)

user = "{'name' : 'jim', 'sex' : 'male', 'age': 18}"
user_obj = eval( user )

这种方式要注意风险,因为eval实际上是解释执行python代码,如果输入来源于外部….

import json

d = json.loads(param)

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

sbf胜博发娱乐城MySQL-python的fetchone如何返回到dict中

( sbf胜博发娱乐城 )

初学Python,菜鸟一枚

看到Python中的fetchall可以简写成如下方式:

infos = [(dict(name=row[1], sex=row[2],age=row[3]) for row in cur.fetchall())]

如果是fetchone,有没有类似的简写?

错误信息补充

首先这个问题写的不是很清楚,这个fetchall/fetchone应该是sqlite模块的操作,而不是所谓的python中:-)。然后fetchall/fetchone的差异仅仅是一个获取所有记录,一个获取单条记录,所以这两种没有什么区别,这里的写法也是一致的,BTW这个完全可以自己测试下
=====================
OK,我明白jimmy的意思了,那确实是不行的,因为fetchall返回的是这样的格式

([a,b,c],[e,f,g],[g,i,j])

所以你使用

for row in cur.fetchall()

可以取到

[a,b,c]和[e,f,g]和[h,i,j]

而fetchone得到的是

(a,b,c)

所以要得到这样的效果可以,注意最后一个,:

[dict(name = row[0],...) for row in [cur.fetchone(),]]

fetchone()返回的tuple为单独一行结果集,对其迭代相当于在遍历一行中的各列
一般只在处理确定只有一行数据的情景下用
多行的情况,还是用fetchall,如果非要用,大概这样

rs = []
while True:
    r = cur.fetchone()
    if not r:
        break
    d = dict(zip(('a', 'b'), r))
    rs.append(d)

很丑陋,对不对

该答案已被忽略,原因:

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

SBF胜博发娱乐老虎机django 如何调试单独启动文件

( SBF胜博发娱乐老虎机 )

想单独启动调试单个py文件,从pycharm启动单独py程序

ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

求怎么配置settings.

需要再单独文件的头部上添加

import sys
import os
sys.path.append('/Users/nooper/Documents/work/payment/')
os.environ['DJANGO_SETTINGS_MODULE']="payment.settings"

这里settings就是项目包程序的配置的settings. 需要项目的工作路径引入进来。

Pycharm debug django问题

报错:
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

  1. 解决:配置一下 run/edit configuration,注意我第二个红色覆盖掉的只setting所在的模块,比如你可能settings是在mysite模块下,那就写mysite.settings

  2. 如果之前已经在terminal里runserver 了,先把他们关掉

  3. 开始debug,出现下面这样的情况就OK了!

  4. 参考http://www.cnblogs.com/lout/articles/4149591.html
    http://stackoverflow.com/questions/27269574/how-to-run-debug-server-for-django-project-in-pycharm-community-edition

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

SBF胜博发娱乐老虎机如何实现一个即时的消息系统

( SBF胜博发娱乐老虎机 )

举例:我们三个人参加一个对话,每次这个对话进行更新的时候如何通知其他用户?语言环境是python,数据库是redis。用的是Flask框架。

Node.js+socket.io很容易实现
可参考 http://socket.io 上面的例子

忘了看你的语言环境,socket.io有基于python的实现:https://github.com/MrJoes/tornadio2https://github.com/abourget/gevent-so…
还有python有很多异步框架也能实现,比如:Twisted http://twistedmatrix.com/trac/

使用:socket.io

Python的话可以使用Tornado,用Long Polling的方式做。如果要支持Comet的话,可以使用CometD。具体用法google吧。

构建一个Realtime系统是很容易的,有很多技术可以选择,要选择一个合适你的,那么你需要充分了解你的业务和客户,你的问题缺少这些东西,所以我只能先简单的罗列出来。

系统的重点是及时消息(IM)的话,你可以采用XMPP这类标准的解决方案。
如果只是很少一部分的功能,那么你可以根据你的业务特点来选WebSocket、FlashScoket、XHR Polling、Long Polling、Http Streaming等

语言不重要 我认为原理更重要 楼上各位
一般是如此两种方式
1.推送方式
2.轮询方式

如果语言技术支持的话 个人建议使用推送方式

可以利用rabbitmq。
可以参考我之前翻译的文档。

http://blog.ottocho.com/post/rabbitmq…
http://blog.ottocho.com/post/rabbitmq…

redis有PUB/SUB功能啊…

更好的扩展性可以采用 socket.io + ZeroMQ 。

我想MQTT可以是一个被关注的标准,在私有而小的信讯系统中,MQTT可以很容易的加进系统中而对大型的MQ来说有对应的接口。

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

SBF胜博发娱乐老虎机python检测大文件的md5值

( SBF胜博发娱乐老虎机 )

hashlib.md5获得打开文件的md5值,但是当文件很大的时候,比如好几个G,就会吃掉过多的内存,有没有办法在不打开文件的情况下,获得大文件的md5值呢?

def md5_for_file(f, block_size=2**20):
    md5 = hashlib.md5()
    while True:
        data = f.read(block_size)
        if not data:
            break
        md5.update(data)
    return md5.digest()

def md5(f):

cmd = "md5sum " + f
import subprocess
fp = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(s,e) = fp.communicate()
result = (s.decode()).strip()
e = (e.decode()).strip()
return (result, e)

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

胜博发游戏官网Flask如何移除Cookie

( 胜博发游戏官网 )

在Flask的文档中,讲解了Cookie怎样读取和存储。

from flask import make_response

@app.route('/')
def index():
    resp = make_response(render_template(...))
    resp.set_cookie('username', 'the username')
    return resp

那么,用户退出登录后,如何移除cookie呢?用pop()方法无法移除呢。

request.cookies.pop('username', None)

resp.set_cookie('username', '', expires=0)

resp.delete_cookie('username')

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机请问用python抓取网页标题时如何让批量抓取二级域名的标题

( SBF胜博发娱乐老虎机 )

# -*- coding: utf-8 -*-
import urllib
import re

d = 1000
url = 'http://gae-xseven01.appspot.com/2'
html = urllib.urlopen(url).read()
m = re.search(r'<title>(.*)</title>', html, flags=re.I)
print  m and m.group(1)or ''
i = m.group(1)
if (i == '503 Over Quota'):
    d =d-1
    print d

我有APPID从01到09.请问如何批量抓取呢

你是问 请问有人可以提供一个搭建在openshift(或者其他免费云平台)上的一个监测gae appid是否超出配额的源代码么?(供公共goagent服务端使用) 这个吧,应该说的比较清楚了,请求一下http://wwqgtxxproxy-1.appspot.com/2就可以了。

看你申请的id名字不太规律,建议你将名字放到一个数组里面,遍历数组即可。遍历数组过程中取一下对应网页标题(比如写一个获取函数),最后怎么保存结果就看你自己了

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

sbf胜博发娱乐城python编程中lambda:lambda:0是什么意思

( sbf胜博发娱乐城 )

比如说:

f=lambda:lambda:0
f()()

再比如说:

  rsp=f(request,param,True)(request,param,True)

不明白这里f()()是啥么意思,谁能举个更详细的例子?

g = lambda: 0

等价于

def g(): return 0

所以

f = lambda: lambda: 0

等价于

f = lambda: g

等价于

def f(): return g

所以 f() 就是 g ,而 f()() 自然就是 g() ,也就是 0

lambda是python中的匿名函数 函数定义体与声明必须在同一行 问题中的例子@felix021 讲的已经很明白,我再举几个例子

def add(x,y):
    return x + y
等价于
    lambda x, y: x + y

支持默认参数和可变参数

>>>a = lambda x, y = 2: x + y
>>>a(3)
5
>>>a(3,5)
8
>>> b = lambda *z: z
>>>b(1,2,3)
(1,2,3)
>>>b(10,'aaa')
(10, 'aaa')

这种问题google 一下 lambda 就会知道了 #授之以鱼不如授之以渔#

lambda其实就是单行没有return的,匿名的,函数定义语法形式。

f=lambda:lambda:0

这句翻译成普通的函数定义形式 其实就是

def f():
    def func():
        return 0
    return func

这下清楚多了吧。f是外边函数对象,f()是里面的func函数对象,f()()是0。

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

sbf胜博发娱乐城python中如何判断一个对象是某个类型的数组?

( sbf胜博发娱乐城 )

RT, 现有数据[

,

…]如何用python判断对象是这种类型? 用isinstance(obj,list)不管用

>>> a
[0, 1, 2]
>>> isinstance(a,list)
True

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

sbf胜博发娱乐城python中list数据类型转换

( sbf胜博发娱乐城 )

我想把y里的数据变为只有浮点数由逗号分隔,去掉括号和括号里的逗号,就像x一样,请问该怎么做呢(x是由数据库查询返回的浮点类型字段,已经转换为list)

y=[(217.365,), (218.925,), (222.45,), (218.0,), (215.15,), (213.66,), ]
x=[1, 2, 3, 4, 5, 6]

(element1, element2, …) 表示元组,既然你的每个元组只有一个元素,那么取出 y 中每个元组的第一个元素构成新的列表就好:

[i[0] for i in y]

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

胜博发游戏官网python快速读取一个大文件内容(瞎猜)

( 胜博发游戏官网 )

问题:

    python有没有一种方法是比简单的readlines()方法更快的方式去读取单个文件,比如,一个从头读文件,一个从尾部读文件,再或者预先将一个文件的行索引分成几个部分来读(文件行内容的操作顺序不重要)。

纯属瞎猜,google貌似找不到关键字。多谢不吝赐教

下面是我自己根据multiprocess瞎写的一个脚本,但是会比for循环慢很多(感觉有一个进程在一个cpu croe上占用太多cpu时间)

#_*_ encoding: utf-8 _*_
'''
Created on 2016-05-10 12:35:29

@author: han
'''
import time
from multiprocessing import Pool


def for_seprate(one_list):
    # result_file = open('result.txt', 'a')
    tmp = []
    for x in one_list:
        tmp.append(x)
    # print(one_list)

def main():
    with open('data.txt', 'r') as f:
        line = f.readlines()
        #将列表分成多少份
        num_of_part = 1000
        line_part = len(line) / num_of_part
        P = Pool()

        if line_part * num_of_part == len(line):
            #
            line_start = 0
            line_end = line_part
            while line_end <= len(line):
                line_copy = line[line_start:line_end]
                #
                # testtime = time.time()
                P.apply_async(for_seprate, args=(line_copy,))  
    #             print('''line_start : {}
    # line_end : {}
    # line_copy : {}'''.format(line_start, line_end, line_copy))
                # print('testendtime : {}'.format(time.time() - testtime))
                line_start = line_end
                line_end = line_end + line_part
        P.close()   #关闭不再产生子进程
        P.join()    #等待子进程结束
        # print('All subprocess done.')

if __name__ == '__main__':
    StartTime = time.time()
    main()
    print('UseTime : {}'.format(time.time() - StartTime))

新手还请不吝赐教。

with语言支持迭代器方式读取大文件。

with open(file_path, 'w') as f:
    for line in f:
        handler(line)

你可以尝试多线程
参考这里

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

胜博发游戏官网python正则表达式

( 胜博发游戏官网 )

有一个字符串

s = "I. INTRODUCTIONIN analogy with the radio-frequency or microwave antennas,an optical antenna facilitates energy transfer from guided-wave modes of an optical waveguide to optical free-space modesand vice versa. Recently, optical antennas have received signif-icant attention due to their ability to control the light emissionwithin a nano-scale footprint [1]–[15]. Optical antennas have thecapability to boost the efficiency of photodetection [8], [9], sens-ing [10], heat transfer [11], [12] and spectroscopy [13]. Also,very directive optical antennas with electronically controlled ra-diation pattern are the subject of great interest for applicationssuch as planar imaging [16] and LIDAR [17]"

有没有办法把它分解类似下面的结果?

("Recently, optical antennas have received signif-icant attention due to their ability to control the light emissionwithin a nano-scale footprint.", "[1]–[15]")
("Optical antennas have thecapability to boost the efficiency of photodetection", "[8], [9]")
("sens-ing", "[10]")
("heat transfer", "[11], [12]")
("and spectroscopy", "[13]")
("Also,very directive optical antennas with electronically controlled ra-diation pattern are the subject of great interest for applicationssuch as planar imaging", "[16]")
("and LIDAR", "[17]")

首先,你这字符串里面有个特殊字符fi,在efficiency这个单词里面,如果将其替换为fi的话,我下面的则可以使用.

#!/usr/bin/python
#-*- coding: UTF-8 -*-
#author:zhaoyingnan
import re;
s = "I. INTRODUCTIONIN analogy with the radio-frequency or microwave antennas,an optical antenna facilitates energy transfer from guided-wave modes of an
 optical waveguide to optical free-space modesand vice versa. Recently, optical antennas have received signif-icant attention due to their ability to con
trol the light emissionwithin a nano-scale footprint [1]–[15]. Optical antennas have thecapability to boost the efficiency of photodetection [8], [9], s
ens-ing [10], heat transfer [11], [12] and spectroscopy [13]. Also,very directive optical antennas with electronically controlled ra-diation pattern are 
the subject of great interest for applicationssuch as planar imaging [16] and LIDAR [17]";
listMatch_1 = re.findall('(?:\.|\,|and)\s([\w\s,-]+)([\[\d\]]+(?:–[\[\d\]]+|,\s[\[\d\]]+)?)', s, re.I);                                                 
for i in listMatch_1:
    print i;

这种规律性较差的,正则不如用 split 来得方便。

re.split(r'(\[[^a-zA-Z]+\])', s)

简单但不严谨的答案

前面的那一段有特征化么?

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

sbf胜博发娱乐城python treeview 的問題

( sbf胜博发娱乐城 )

我在 column 上設置 “stretch = False”, 讓他不能調寬度, 但是沒有作用, 有人知道為什麼嗎?

以下是我的代碼

from tkinter import *
from tkinter import ttk

def main():
    gMaster = Tk()
    w = ttk.Treeview(gMaster, show="headings", columns=('Column1', 'Column2'))
    w.heading('#1', text='Column1', anchor=W)
    w.heading('#2', text='Column2', anchor=W)
    
    w.column('#1', minwidth = 70, width = 70, stretch = False)
    w.column('#2', minwidth = 70, width = 70, stretch = False)
    w.grid(row = 0, column = 0)
    mainloop()

if __name__ == "__main__":    
    main()

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…