LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭

LOFTER-网易轻博

python

404.4万浏览    3676参与
i51gis
沈沐涟

想学Python,但被Windows的dll报错搞得想吐怎么办

一些废话:

最近打算开始写笔记。

其实这玩意我自己写完不会看的……查的时候还有个私人速查笔记本。与其说放在这里是分享交流,不如说这些东西都是写给自己和有缘人的。(对啊谁在老福特上发技术笔记,我只是很不喜欢搞一堆平台一堆帐号,不想看到麻烦直接屏蔽python tag)

以前工作的时候也习惯写笔记,如果是做开发或者要constant learning的行业,写笔记这个习惯是必须的,不然忘得很快。


言归正传,Windows作为闭源系统,光装python环境已经让人想吐了,换台Mac不现实,有没有什么办法能让人免受各种DLL issue侵扰安心做开发?

(其实本人装anaconda之后,...

一些废话:

最近打算开始写笔记。

其实这玩意我自己写完不会看的……查的时候还有个私人速查笔记本。与其说放在这里是分享交流,不如说这些东西都是写给自己和有缘人的。(对啊谁在老福特上发技术笔记,我只是很不喜欢搞一堆平台一堆帐号,不想看到麻烦直接屏蔽python tag)

以前工作的时候也习惯写笔记,如果是做开发或者要constant learning的行业,写笔记这个习惯是必须的,不然忘得很快。


言归正传,Windows作为闭源系统,光装python环境已经让人想吐了,换台Mac不现实,有没有什么办法能让人免受各种DLL issue侵扰安心做开发?

(其实本人装anaconda之后,学生阶段绝大多数情况没有遇上麻烦,但是工作的时候还是遇上了DLL报错,所以才去找了各种workaround,后来发现其实有很多一劳永逸的办法)

首先,可以考虑装一个Linux系统,弊端是切换起来很麻烦,而且当初我给外星人装双系统的时候折腾了很久,怕麻烦还是不要选这条路了。

现在正式介绍两种亲测很好用的方法:


1. Winpy,不知道国内有没有ban这个地址,但是这个用起来真的很方便。如果你用pycharm IDE,外部lib连到winpy几乎可以绕过所有dll报错。而且这一包整合了你经常会用到的python开发工具,包括Qt Designer,在Windows上用起来真实方便。

下载地址:http://winpython.sourceforge.net


2. 不过我还是要重点介绍一下vagrant这个神器。这也是我最近才知道的神仙开发工具。它的本质其实还是在跑一个虚拟机,因此你还是要装一个virtual box的,但是因为有共享文件夹的存在,win系统和虚拟机是不需要互传文件的,你在win上改的代码立刻可以在vagrant的终端跑起来。双屏开发的时候基本就是右边在win里写代码左边开着ubuntu测,特别节省时间。

下载地址:https://www.vagrantup.com/downloads.html

Virtual box的下载地址:https://www.virtualbox.org/wiki/Downloads

关于vagrant环境的安装有两种方法,一种是已有的vagrant文件(里面都是基础配置,包括一些dependencies)放在你准备做项目的文件夹里,打开命令行工具:

创建环境:

$ vagrant up

然后就是等,等个20分钟不到,跑一下重启

$ vagrant halt

$ vagrant up


另一种方式是人工配置,几乎一样,进入项目文件夹里跑一下指令

$ vagrant init hashicorp/bionic64

然后在环境里或者ssh进虚拟机里安装dependencies,都行

$ vagrant ssh


教程也可以在这里找到:

https://www.vagrantup.com/intro/getting-started/index.html

推荐这种方法的主要原因就是直接,省时省力。尤其是当你要调用的包对win支持不好的时候,在win里配置debug起来实在太浪费时间了,而且通常做得都是些无用功,还不如直接绕过去把时间花在刀刃上。

SagKimo
本来在和她一起写作文……然后就...

本来在和她一起写作文……然后就沉迷了……

本来在和她一起写作文……然后就沉迷了……

死胖子撒

刚到手的资料,有点烫手,找老实人接盘🤔️🤔️🤔️
想要的朋友加QQ2296673936,备注python,免费分享

刚到手的资料,有点烫手,找老实人接盘🤔️🤔️🤔️
想要的朋友加QQ2296673936,备注python,免费分享

newlinei
柠檬花开

设计彩虹项目(高二201912第16周)

教学目标

1. 了解画图中色彩的几种使用方式。

2. 使用循环使用彩虹色彩条。

3. 了解write函数的使用。

教学重点:彩虹色彩的设计

教学难点:色彩值的变化

一、彩虹条项目

1.原来的位置: 右转90”, 前进一段,到达下一行,再右转90°,朝向右侧。重复上述过程,就能画出若干条不同颜色的线条。

颜色怎么办呢?我们首先定义一个列表,列表中包含了彩虹中的几种颜色。用red3颜色, red3是红色的一种,后面的3代表颜色的深度。同样,seagreen4是绿色的一种。title("彩虹色")用于设置...

教学目标

1. 了解画图中色彩的几种使用方式。

2. 使用循环使用彩虹色彩条。

3. 了解write函数的使用。

教学重点:彩虹色彩的设计

教学难点:色彩值的变化

一、彩虹条项目

1.原来的位置: 右转90”, 前进一段,到达下一行,再右转90°,朝向右侧。重复上述过程,就能画出若干条不同颜色的线条。

颜色怎么办呢?我们首先定义一个列表,列表中包含了彩虹中的几种颜色。用red3颜色, red3是红色的一种,后面的3代表颜色的深度。同样,seagreen4是绿色的一种。title("彩虹色")用于设置绘图窗口标题栏中的文本。

程序如下:

任务一:完成彩虹条,颜色可以用列表表示

from turtle import *

yanse = [ "red3", "orange", "yellow", "seagreen4","royalbluel", "dodgerblue4"]

title("彩虹色")

reset ()

penup ()

goto(-320,-195)

width (70)

for i in yanse :

    color (i)

    pendown ()

    forward(640)

    penup ()

    backward(640)

    left (90)

    forward (66)

    right (90)

使用for循环直到所有的颜色都使用过了,每次循环都先前进640像素,然后后退640像索,转90向上前进66像素,再右转90°朝向前方。我们还可以使用write()函数在图中绘制“彩红色”3个大字。

#输出文字

tracer(False)

goto(0,0)

pendown()

color('yellow')

write("彩虹",align="center",font=("Script MT Bold", 80, "bold"))

tracer(True)

知识参考:write()函数

格式:turtle.write(s [,font=("font-name",font_size,"font_type")])

 #写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

二、拓展案例项目

1.需求 

做出彩虹效果

2.颜色空间 

RGB模型:光的三原色,共同决定色相

HSB/HSV模型:H色彩,S深浅,B饱和度,H决定色相 需要将HSB模型转换为RGB模型

代码段:

from turtle import *

def HSB2RGB(hues):

    hues = hues * 3.59 #100转成359范围

    rgb=[0.0,0.0,0.0]

    i = int(hues/60)%6

    f = hues/60 -i

    if i == 0:

        rgb[0] = 1; rgb[1] = f; rgb[2] = 0       

新乐

Head First Python(中文版).pdf

说到人工智能,很多人就一定会提到Python,甚至有人说Python就是人工智能的入门,为什么会有这样的说法呢?其实Python一直都是科学计算和数据分析的重要工具。

科学家们很早就喜欢用Python实验算法,除Python外,实际上TensorFlow框架还支持JavaScript、c++、Java、GO等语言。按说人工智能算法用这些也可以。但是官方说了,除Python之外的语言不一定承诺API稳定性。所以人工智能和Python就密不可分了。大家都说时势造英雄,我们也可以说是人工智能和Python互相成就对方,人工智能算法促进Python的发展,而Python也让算法更加简单。


你想...

说到人工智能,很多人就一定会提到Python,甚至有人说Python就是人工智能的入门,为什么会有这样的说法呢?其实Python一直都是科学计算和数据分析的重要工具。

科学家们很早就喜欢用Python实验算法,除Python外,实际上TensorFlow框架还支持JavaScript、c++、Java、GO等语言。按说人工智能算法用这些也可以。但是官方说了,除Python之外的语言不一定承诺API稳定性。所以人工智能和Python就密不可分了。大家都说时势造英雄,我们也可以说是人工智能和Python互相成就对方,人工智能算法促进Python的发展,而Python也让算法更加简单。




你想过可以通过一本书就学会Python吗?《Head First Python(中文版)》超越枯燥的语法和甩法手册,通过一种独特的方法教你学习这种语言。你会迅速掌握Python的基础知识,然后转向持久存储、异常处理、Web开发、SQLite、数据加工和lGoogle App Engine。你还将学习如何为Android编写移动应用,这都要归功于Python为你赋予的强大能力。

本书会提供充分并且完备的学习体验,帮助你成为一名真正的Python程序员。 作者巴里觉得你的时间相当宝贵,不应当过多地花费在与新概念的纠缠之中。通过应用认知科学和学习理论的最新研究成果,《Head First Python(中文版)》可以让你投入一个需要多感官参与的学习体验,这本书采用丰富直观的形式使你的大脑真正开动起来,而不是长篇累牍地说教,让你昏昏欲睡。

下载地址

卢乐乐
newlinei
大风起兮云飞扬
hdw2000
newlinei
klipc的小助理

KlipC旨在通过Python集成改变自动交易

KlipC为全世界的交易员和资金经理提供了透明的风险管理和云端金融聚集。在上线的两天后,KlipC累积了数百名用户对云端金融管理者的反馈和建议。


凭借在Python基础架构上构建的强大后端以及与最新API连接相集成的功能,KlipC的用户对我们的数据刷新速度和稳定的连接表示赞赏。今天,KlipC董事长Nana Naumovic接受采访时说到:“现在KlipC上线了,有了一些不错的反馈,我们计划在明年1月的某个时间推出2.0。下一个版本将为交易员带来更多激动人心的功能,更具体地说,是让交易员可以在云端持续实现交易自动化的功能。”


Mr.Naumovic提出,市场交易只有两种方...

KlipC为全世界的交易员和资金经理提供了透明的风险管理和云端金融聚集。在上线的两天后,KlipC累积了数百名用户对云端金融管理者的反馈和建议。





凭借在Python基础架构上构建的强大后端以及与最新API连接相集成的功能,KlipC的用户对我们的数据刷新速度和稳定的连接表示赞赏。今天,KlipC董事长Nana Naumovic接受采访时说到:“现在KlipC上线了,有了一些不错的反馈,我们计划在明年1月的某个时间推出2.0。下一个版本将为交易员带来更多激动人心的功能,更具体地说,是让交易员可以在云端持续实现交易自动化的功能。”


Mr.Naumovic提出,市场交易只有两种方式,一种是手动交易,另一种是通过算法自动交易。例如,我们可以创建一个算法,在短时间内多次买卖同一产品。如果我们手动操作,将花费更长的时间(包括延迟),并可能会错过许多交易信号。


许多专有平台可让用户编写自己的策略,其中包括Metatrader、cTrader、jForex、eTrade等。尽管每个编程接口的语言都不相同,但每个逻辑背后的逻辑是相同的:创建一个机器人,在正确的时间对市场动向和交易地点做出反应。



在下一个版本中,KlipC旨在创建2种智能交易方法,使用户能够自动化交易和回测策略。


1 KlipC将集成一个Python环境,让用户编写自己的策略。


2.KlipC将允许用户实现将现有的自动化策略上传到自己的后台。


最后,关于KlipC的发布,董事总经理Andi Duan说:“作为参与者,我们要记得投资与交易的区别。我们认为投资是进入金融市场的一种被动方式。如果您选择投资并控制其他人,请确保你随时在监控他们的策略。当市场以正确的方式运行时,您会获得更多利润,但是不良的风险管理可能会使您远远落后于市场基准。”



newlinei

安装Django的超级体验

作者:newlinei
安装django居然会有这么多坑,而且在网上都是片面的零星知识,我只希望做一个集合,让大家愉快的学习。本文基于windows操作系统下,python3.8 64bit和django 2.2.4版本。

忍者不可以犯同样的两次错误,虽然我不是忍者,但是原来跳过的坑仍然困住了我,我自己都会发狂的。学习编程也是一样,一步步都需要谨慎小心,不然就是万丈深渊,粉身碎骨,加班996,英年早逝......就问你怕不怕?

夜思

Python实现多进程ping并记录到excel

__author__ = 'Jimmy'
"""
说明:该程序通过访问数据库读取数据,然后写进excel表格,在对表格里的ip进行ping测试,
如果不通则记录时间,下次测试记录上次不通的时间差,这样就可以实现掉线时长!
"""
import threading,subprocess,psycopg2,datetime,os,openpyxl,time
import win32con, win32api
import socket
from tqdm import tqdm
import smtplib
from email.mime.text...

__author__ = 'Jimmy'
"""
说明:该程序通过访问数据库读取数据,然后写进excel表格,在对表格里的ip进行ping测试,
如果不通则记录时间,下次测试记录上次不通的时间差,这样就可以实现掉线时长!
"""
import threading,subprocess,psycopg2,datetime,os,openpyxl,time
import win32con, win32api
import socket
from tqdm import tqdm
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
try:
    # Python3
    from queue import Queue
except ImportError:
    # Python2
    from Queue import Queue
def getData():  # 连接postgres数据库,并执行sql语句,获取结果
    conn=psycopg2.connect(database="###",user="###",password="#########",host="############",port="5432")
    print("Opened database successfully")
    cur=conn.cursor()
    sql = "SELECT  distinct(network_addr), name, camera_pol_number,longitude,latitude from v_tz where name LIKE 'T%'"
    cur.execute(sql)
    columnRows = cur.fetchall()
    conn.commit()
    cur.close()
    conn.close()
    return columnRows
def check_alive(i, queue):  # 检测IP是否通
    while True:
        k, ip = queue.get()
        if ip is None:
            break
        result = subprocess.call('ping -w 1000 -n 1 %s' %ip, stdout=subprocess.PIPE, shell=True)  # 调用windows的cmd命令pingIP返回
        if result == 0:
            ws.cell(k, 7, "online")
            """
            h = subprocess.getoutput('ping -n 1 ' + ip)
            returnnum = h.split('平均 = ')[1]
            ws.cell(k, 6, returnnum)  #  测试点位延时
            #info = ('\033[32m%s\033[0m 能ping通,延迟平均值为:%s' %(ip,returnnum))
            """
        else:
            global offs
            offs += 1
            c = 1
            with open('OffLine.txt','a') as f:  # 不在线的写入文件
                f.write(str(nowTime) + " " + ip + '\n')
            ws.cell(k, c+6, "offline")
            if ws.cell(k, col-1).value == None:   # 如果表格里没有记录时间,则按照最新时间记录进去
                DXtime = nowTime
            else:
                DXtime = datetime.datetime.strptime(str(ws.cell(k, col-1).value), '%Y-%m-%d %H:%M:%S')  # 如果表格里面有时间则将现在时间减去表格时间求时间差
            t1 = (nowTime-DXtime).days*24+(nowTime-DXtime).seconds/3600  # 相差时间按小时计算
            if ws.cell(k, col).value == None:  # 如果表格第7列中没有数据,则直接填入上面计算的时间差
                ws.cell(k, c+8, str('%.2f' %t1))
            else:  # 如果表格第7列中有数据,则将该数据加上上面计算的时间差,统计出点位掉线总时间
                t2 = float(ws.cell(k, col).value)+t1
                ws.cell(k, c+8, str('%.2f' %t2))
            ws.cell(k, c+7, str(nowTime))  #  在第6列填上最新监测时间
        queue.task_done()
def writeDataToExcel():
    ws.cell(1, 1, "IP地址")
    ws.cell(1, 2, "点位名称")  # 在第一行第二列填入字符
    ws.cell(1, 3, "点位编号")
    ws.cell(1, 4, "经度")
    ws.cell(1, 5, "纬度")
    ws.cell(1, 6, "延时")
    ws.cell(1, 7, "在线状态")
    ws.cell(1, 8, "检测时间")
    ws.cell(1, 9, "掉线时长")
    for i in range(0, rows2):  # 将数据库中获取的数据填入excel中(从第二行开始)
        ws.append([str(columnRows[i][0]),str(columnRows[i][1]),str(columnRows[i][2]),str(columnRows[i][3]),str(columnRows[i][4])])
def senmail(text_msg):
    mail_host = "########"  #设置服务器
    mail_user = "##########"    #用户名
    mail_pass = "********"   #口令
    sender = '##########@#####.com'
    receivers = ['###########@######.com']   # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
    message = MIMEMultipart()
    test_message = MIMEText(text_msg, 'plain', 'utf-8')
    message.attach(test_message)
    def add_excel(xlsx_file,xlsx_name):
        msg_xlsx = MIMEText(open(xlsx_file,'rb').read(),'base64','utf-8')
        msg_xlsx.add_header('Content-Disposition', 'attachment', filename=xlsx_name)
        return msg_xlsx
    message_xlsx = add_excel('ip_tables.xlsx','ip_tables.xlsx')
    message.attach(message_xlsx)
    message['From'] = "chaozhou"
    message['To'] =  "chaozhou3"
    subject = '开始测试项目点位'
    message['Subject'] = subject
    try:
        smtpObj = smtplib.SMTP()
        smtpObj.connect(mail_host, 25)    # 25 为 SMTP 端口号
        smtpObj.login(mail_user,mail_pass)
        smtpObj.sendmail(sender, receivers, message.as_string())
        print ("执行成功")
    except smtplib.SMTPException:
        print ("Error: 执行失败")
if __name__ == '__main__':
    time_start=time.time()
    print("导出增补点位数据及测试点位在线情况!(make sure the DBserver is online)")
    print("Author@Jimmy!,email:song179101723@163.com")
    nowTime=datetime.datetime.strptime(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S')
    hostname = socket.gethostname()
    myaddr = socket.gethostbyname(hostname)
    col = 9
    columnRows = getData()
    rows2 = len(columnRows)  # 获取数据库的数据数量
    cells = []
    offs = 0
    ip_queue = Queue()
    mon = str(datetime.datetime.now().month) + "月"
    if os.path.exists("ip_tables.xlsx"):  # 判断excel文件是否存在,如果存在直接打开
        print("ip_tables.xlsx is Exist")
        win32api.SetFileAttributes('ip_tables.xlsx', win32con.FILE_ATTRIBUTE_ARCHIVE)  # 保存excel文件前将该文件属性设置成可写
        wb = openpyxl.load_workbook("ip_tables.xlsx")
        # print(wb.sheetnames)
        if mon in wb.sheetnames:
            ws = wb[mon]
        else:
            ws = wb.create_sheet(mon)
            writeDataToExcel()
        columns = ws.max_column  # 获取表格1的最大列数
        rows = ws.max_row  # 获取表格1的最大行数
        for i in range(2,rows+1):
            v = ws.cell(row=i, column=1).value
            #print(v)
            ip_queue.put([i, v])  # 已数以组方式加入队列
        """
        for cell in list(ws.columns)[0]:  # 获取表格第一列的数据保存在cells数组中
            cells.append(cell.value)
        for ip2 in columnRows:
            if ip2[0] not in cells:  # 判断数据库中提取的IP是否在excel中存在,如果不存在则在表格后面加上,如果存在则pass
                rows += 1
                ws.cell(rows, 1, str(ip2[0]))
                ws.cell(rows, 2, str(ip2[1]))
                ws.cell(rows, 3, str(ip2[2]))
                ws.cell(rows, 4, str(ip2[3]))
                ws.cell(rows, 5, str(ip2[4]))
            else:
                pass
        """

    else:  # 如果excel文件不存在,则新建文件
        print("Create NEW File ip_tables.xlsx!")
        wb = openpyxl.Workbook()  # 新建一个工作表
        ws = wb.create_sheet(mon)
        writeDataToExcel()
    threads = []
    for i in tqdm(range(20)):  #  tqdm生成程序执行进度tqdm
        thread = threading.Thread(target=check_alive, args=(i, ip_queue))
        thread.setDaemon(True)  # 指定所构建的线程是否为后台线程
        thread.start()
    ip_queue.join()
    #  win32api.SetFileAttributes('ip_tables.xlsx', win32con.FILE_ATTRIBUTE_ARCHIVE)  # 保存excel文件前将该文件属性设置成可写
    wb.save('ip_tables.xlsx')
    wb.close()
    win32api.SetFileAttributes('ip_tables.xlsx', win32con.FILE_ATTRIBUTE_READONLY)  # 保存excel文件后将该文件属性设置成只读,避免被改动
    #print("Finished,共计点位数量为:%s,共掉线数量为:%s" % (rows2, offs))
    with open('OffLine.txt','a') as f:  # 不在线的写入文件
            f.write("共计点位数量为:"+str(rows)+",共掉线数量为:"+str(offs)+ '\n')
    mesg = str("本机%s IP为%s!本次统计点位数量为:%s个,掉线数量为:%s个" % (hostname, myaddr, rows2, offs))
    senmail(mesg)  # 打包附件发送邮件
    time_end=time.time()
    print('totally cost',time_end-time_start)

本代码中有个进度条的一直没办法调整好,因为设计到多线程,没办法按照循环进度来处理,如果需要做则记录每个进程处理时间来做。暂未实现


嗨呀嗨呀
半生负气,一身孤寂

起名困难,随机生成100个,总有一两个能用吧。

升级版,按字起名,加姓氏。


碎将 高闻 行年 予晚 渊寒 游藏 时淮 霜名 若闻 风示 谁叔 叔闻 落鸣 平霜 深余 平任 尘云 高将 藏朱 将鸣 看秋 冷南 千秋 归途 年秋 淮离 霜千 藏途 离付 云洛 百关 谁尘 含鸣...

起名困难,随机生成100个,总有一两个能用吧。

升级版,按字起名,加姓氏。


碎将 高闻 行年 予晚 渊寒 游藏 时淮 霜名 若闻 风示 谁叔 叔闻 落鸣 平霜 深余 平任 尘云 高将 藏朱 将鸣 看秋 冷南 千秋 归途 年秋 淮离 霜千 藏途 离付 云洛 百关 谁尘 含鸣 关余 沉怀 名洛 青离 示听 示渊 南闻 淮示 闻鸣 泠游 叔深 言醉 任云 泠千 玄看 离看 南风 行深 余忆 藏云 忆任 淮风 含言 顾含 碎关 风平 将青 藏忆 百行 百洛 尘余 君风 玄深 百闻 碎问 百深 若藏 途予 阳年 沉示 名途 平君 途含 今怀 云冷 怀问 时玄 青寒 行看 顾名 余冷 泠是 今观 归深 阳霜 今听 醉予 问年 落余 朱叔 碎顾 白寒 叔怀 归深 淮霜 闻离 任霜

嗨呀嗨呀
思维的弦

笨办法学Python(中文第3版)

作者:思维的弦

本书结构非常简单,除“准备工作”之外,还包括52个习题,其中26个覆盖了输入/输出、变量和函数3个主题,另外26个覆盖了一些比较进阶的话题,如条件判断、循环、类和对象、代码测试及项目的实现等。每一章的格式基本相同,以代码习题开始,按照说明编写代码,运行并检查结果,然后再做附加练习。

javajiagoushiziyuanfenxiang

LOFTER

让兴趣,更有趣

简单随性的记录
丰富多彩的内容
让生活更加充实

下载移动端
关注最新消息