我有下面的脚本,我用它自己发送 10 条消息<->我自己。然而,我注意到 Python 确实需要一段时间才能做到这一点。去年,我需要一个系统来发送大约 200 封带有附件和文本的电子邮件,我用 msmtp + bash 实现了它。据我记忆,速度要快得多。
将 while 循环移动到内部(围绕 smtp_serv.sendmail(sender, recepient, msg) 函数会产生类似的结果)。
难道我做错了什么?当然它不会比 bash + msmtp 慢(而且我只发送一条“嗨”消息,没有附件)。
#! /usr/bin/python3.1
def sendmail(recepient, msg):
import smtplib
# Parameters
sender = 'login@gmail.com'
password = 'password'
smtpStr = 'smtp.gmail.com'
smtpPort = 587
# /Parameters
smtp_serv = smtplib.SMTP(smtpStr, smtpPort)
smtp_serv.ehlo_or_helo_if_needed()
smtp_serv.starttls()
smtp_serv.ehlo()
recepientExists = smtp_serv.verify(recepient)
if recepientExists[0] == 250:
smtp_serv.login(sender, password)
try:
smtp_serv.sendmail(sender, recepient, msg)
except smtplib.SMTPException:
print(recepientExists[1])
else:
print('Error', recepientExists[0], ':', recepientExists[1])
smtp_serv.quit()
for in in range(10):
sendmail('receiver@gmail.com', …Run Code Online (Sandbox Code Playgroud) 所以我在2D平面上有一个N点的图(N可以非常大).我正在编写一个脚本来显示算法的工作原理.所以我有循环.在for循环中的每一步,我都想改变当前点的颜色(实际上可能只是用这一点制作一个干线图).
但是,在步骤结束时,我想删除当前点的颜色,以便我可以为下一个着色.目前我必须重绘整个图(包括2D点).我不确定Matlab是否在绘图命令中检测到这些内容但有没有办法在不重绘整个绘图的情况下执行此操作?
例如:
plot(x,y, '*');
for j = 1:N-1
for i = j:N
hold on;
%Do stuff
plot(x,y, '*');
hold on;
stem(x(1), y(1), 'g*');
end
end
Run Code Online (Sandbox Code Playgroud) 我想在每次进入特定目录时更改shell的背景颜色(zsh但bash也会这样做).例如,我想在每次进入/ mnt/data时更改背景颜色以说明红色,如果我退出/ mnt/data /,则将其更改回正常状态...
要更改背景并保留当前提示,我会:
export PS1="$PS1 %{$'\e[0;41m'%}"
Run Code Online (Sandbox Code Playgroud)
我不知道如何挂起它以便每次更改工作目录时对其进行评估(包装在if语句中).
I noticed the following behaviour exhibited by numpy arrays:
>>> import numpy as np
>>> s = {1,2,3}
>>> l = [1,2,3]
>>> np.array(l)
array([1, 2, 3])
>>> np.array(s)
array({1, 2, 3}, dtype=object)
>>> np.array(l, dtype='int')
array([1, 2, 3])
>>> np.array(l, dtype='int').dtype
dtype('int64')
>>> np.array(s, dtype='int')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'set'
Run Code Online (Sandbox Code Playgroud)
There are 2 things to notice:
我不知道为什么我会收到这个错误.似乎基本.无论如何,我有一个叫做EmailSender的单例类.下面的代码简短易行.问题是我不能在MainWindow类中使用sender.我尝试的任何东西,如sender.Send()被视为我已经完成了asdafsafas.Send().它被视为随机字符串.不知道为什么会这样.
using System;
using System.Net.Mail;
using System.Windows.Forms;
namespace SendMail
{
public partial class MainWindow : Form
{
#region Private variables
private MailMessage msg = new MailMessage();
private EmailSender sender = EmailSender.GetInstance();
#endregion
public MainWindow()
{
InitializeComponent();
}
private MailMessage PrepareMailMessage()
{
return msg;
}
private void btnSend_Click(object sender, EventArgs e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是GetInstance方法:
public static EmailSender GetInstance()
{
return _instance ?? (_instance = new EmailSender());
}
Run Code Online (Sandbox Code Playgroud) 我看过那里的大部分IDE.我已经设置vim使用自动完成功能,我现在正在使用它.但是,我似乎无法像使用.NET的Visual Studio那样工作.自动完成似乎仅在某些情况下有效,它只显示方法而不是它们采用的参数.它对我来说几乎无法使用.
我所追求的是一个弹出窗口,它将向我展示所有可用的方法及其所采用的参数.当你编程.NET时,VS2010的感觉几乎就是这样.
我想每隔X秒调用一次函数.我读了关于System.Threading.Timer的SO,所以我这样做:
Timer timer = new Timer(new TimerCallback(TimeCallBack), null, 0, 50000);
Run Code Online (Sandbox Code Playgroud)
调用函数:
void TimeCallBack();
Run Code Online (Sandbox Code Playgroud)
但是,我想将一个参数传递给该函数,以便计时器调用以下函数:
void TimeCallBack(MyClass mc);
Run Code Online (Sandbox Code Playgroud)
我可以让我通过全球的实例,但我宁愿通过它.从我看到的TimerCallback委托在Timer构造函数中使用.我可以用任何方式使用自己的委托/函数调用吗?
我的代码有问题.
#!/usr/bin/env python3.1
import urllib.request;
# Disguise as a Mozila browser on a Windows OS
userAgent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)';
URL = "www.example.com/img";
req = urllib.request.Request(URL, headers={'User-Agent' : userAgent});
# Counter for the filename.
i = 0;
while True:
fname = str(i).zfill(3) + '.png';
req.full_url = URL + fname;
f = open(fname, 'wb');
try:
response = urllib.request.urlopen(req);
except:
break;
else:
f.write(response.read());
i+=1;
response.close();
finally:
f.close();
Run Code Online (Sandbox Code Playgroud)
当我创建urllib.request.Request对象(称为req)时,问题似乎就出现了.我用一个不存在的url创建它,但后来我将url更改为它应该是什么.我这样做是为了让我可以使用相同的urllib.request.Request对象,而不必在每次迭代时创建新的对象.可能有一种机制可以在python中做到这一点,但我不确定它是什么.
编辑 错误消息是:
>>> response = urllib.request.urlopen(req);
Traceback (most recent call last): …Run Code Online (Sandbox Code Playgroud) 我正在使用烧瓶配置,我像这样配置我的应用程序:
app = Flask(__name__)
app.config.from_object('yourapplication.Config')
Run Code Online (Sandbox Code Playgroud)
我的配置对象是这样的:
class Config(object):
DEBUG = True
TESTING = False
DB_USER = os.getenv("DB_USER", "db_user")
DB_PASSWORD = os.getenv("DB_PASSWORD", "db_password")
DB_HOST = os.getenv("DB_HOST", "localhost") # 127.0.0.1"
DB_PORT = os.getenv("DB_PORT", "5555")
DB_SCHEMA = "my_schema"
DB_DATABASE_NAME = "my_database"
SQLALCHEMY_DATABASE_URI = "postgresql://{}:{}@{}:{}/{}".format(
DB_USER, DB_PASSWORD, DB_HOST, DB_PORT, DB_DATABASE_NAME)
SQLALCHEMY_TRACK_MODIFICATIONS = False
Run Code Online (Sandbox Code Playgroud)
我像这样运行我的应用程序(使用烧瓶脚本):
my_flask_app cmd1 arg1 arg2
Run Code Online (Sandbox Code Playgroud)
我想做以下事情:
DEBUG=true DB_PORT=1234 my_flask_app cmd1 arg1 arg2
Run Code Online (Sandbox Code Playgroud)
并覆盖 2 个配置参数。我想知道是否已经有一种方法可以从命令行覆盖配置参数,或者我是否应该编写一些代码?
编辑:为了澄清,我有几个从“Config(object)”继承的预设配置,如下所示:
class Dev(Config):
pass
class Ua(Config):
pass
class Prod(Config):
DEBUG = False
Run Code Online (Sandbox Code Playgroud)
我的应用程序默认为“开发”配置。很容易想象一个场景,您想要运行“UA”配置但像这样覆盖端口:
FLASK_ENV=UA DB_PORT=1234 …Run Code Online (Sandbox Code Playgroud) 我有一本有int钥匙的字典.密钥是随机顺序的,并不是必然的连续性(例如5,3,11,12,10,4).我想以密钥大小的相反顺序访问每个键值对.所以对于上面的例子,我想访问(12,11,10 ......).
我看到如何做到这一点的方法是获取元素数量的计数,通过二进制搜索找到最大值,然后找到小于当前最大值的下一个最大值等.直到我处理了数字字典中包含的元素.
但是,可能存在一种方法.有关如何查找最大键的讨论:获取字典中的最大键