小编Ast*_*phe的帖子

在python的Currying装饰员

我正在尝试在python中写一个currying装饰器,我想我已经有了一般的想法,但仍然有一些不正常的情况......

def curry(fun):

    cache = []
    numargs = fun.func_code.co_argcount

    def new_fun(*args, **kwargs):
        print args
        print kwargs
        cache.extend(list(args))

        if len(cache) >= numargs:   # easier to do it explicitly than with exceptions

            temp = []
            for _ in xrange(numargs):
                temp.append(cache.pop())
            fun(*temp)

    return new_fun


@curry
def myfun(a,b):
    print a,b
Run Code Online (Sandbox Code Playgroud)

虽然对于以下情况,这可以正常工作:

myfun(5)
myfun(5)
Run Code Online (Sandbox Code Playgroud)

对于以下情况,它失败:

myfun(6)(7)
Run Code Online (Sandbox Code Playgroud)

任何有关如何正确执行此操作的指示将非常感谢!

谢谢!

python decorator currying

18
推荐指数
3
解决办法
5981
查看次数

Python:来自dict系列的Pandas数据帧

我有一个Pandas数据帧:

type(original)
pandas.core.frame.DataFrame
Run Code Online (Sandbox Code Playgroud)

其中包括系列对象original['user']:

type(original['user'])
pandas.core.series.Series
Run Code Online (Sandbox Code Playgroud)

original['user'] 指向一些dicts:

type(original['user'].ix[0])
dict
Run Code Online (Sandbox Code Playgroud)

每个dict都有相同的键:

original['user'].ix[0].keys()

[u'follow_request_sent',
 u'profile_use_background_image',
 u'profile_text_color',
 u'id',
 u'verified',
 u'profile_location',
 # ... keys removed for brevity
]
Run Code Online (Sandbox Code Playgroud)

以上是user来自tweeter API的推文中字段的一部分(的一部分).我想从这些dicts构建一个数据框.

当我尝试直接创建数据框时,每行只得到一列,此列包含整个dict:

pd.DataFrame(original['user'][:2])
    user
0   {u'follow_request_sent': False, u'profile_use_...
1   {u'follow_request_sent': False, u'profile_use_..
Run Code Online (Sandbox Code Playgroud)

当我尝试使用from_dict()创建数据框时,我得到相同的结果:

pd.DataFrame.from_dict(original['user'][:2])

    user
0   {u'follow_request_sent': False, u'profile_use_...
1   {u'follow_request_sent': False, u'profile_use_..
Run Code Online (Sandbox Code Playgroud)

接下来我尝试了一个列表理解,它返回了一个错误:

item = [[k, v] for (k,v) in users]
ValueError: too many values to unpack
Run Code Online (Sandbox Code Playgroud)

当我从单行创建数据框时,它几乎可以工作:

df = pd.DataFrame.from_dict(original['user'].ix[0])
df.reset_index()

    index   contributors_enabled    created_at  default_profile     default_profile_image …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

17
推荐指数
3
解决办法
8958
查看次数

PIL:使用带有二进制数据的fromarray()并编写彩色文本

我的Python库PIL存在一个基本问题.我有一些.txt文件只包含排列在矩阵中的01值.我已经使用PIL中包含的函数Image.fromarray()转换了图像中的"二进制"数据.如果我将它乘以255,我的数据格式会生成黑白图像,这对我来说很好.现在我想使用PIL中包含的相应文本函数向图像添加一些文本,但我希望该文本被着色.显然,我无法做到这一点,因为从fromarray获得的图像具有灰度色彩图.我该怎么改变它?

text numpy python-imaging-library

12
推荐指数
1
解决办法
3万
查看次数

使用python编辑jpg中的rgb值

我正在尝试使用Python Imaging Library更改照片中的RGB值.我一直在使用函数Image.point,它做我想要的,除了我希望能够在R G和B值上实现不同的功能.谁知道我怎么做到这一点?

谢谢!

python rgb image image-processing python-imaging-library

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

如何检查.xls和.csv文件是否为空

问题1:如何检查整个.xls或.csv文件是否为空.这是我使用的代码:

try:
    if os.stat(fullpath).st_size > 0:
       readfile(fullpath)
    else:
       print "empty file"
except OSError:
    print "No file"
Run Code Online (Sandbox Code Playgroud)

空的.xls文件大小超过5.6kb,因此它是否有任何内容并不明显.如何检查xls或csv文件是否为空?

问题2:我需要检查文件的标题.我怎么能告诉python只有一行标题的文件是空的?

import xlrd
def readfile(fullpath)
    xls=xlrd.open_workbook(fullpath)  
    for sheet in xls.sheets():
        number_of_rows = sheet.nrows 
        number_of_columns = sheet.ncols
        sheetname = sheet.name
        header = sheet.row_values(0) #Then if it contains only headers, treat it as empty.
Run Code Online (Sandbox Code Playgroud)

这是我的尝试.如何继续使用此代码?

请为这两个问题提供解决方案.提前致谢.

python csv xls xlrd python-2.7

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

省略 matplotlib 图中的连接线,例如 y = tan(x)

我有图表y = tan(x),我想删除垂直线(见下文)。

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

# Choose evenly spaced x intervals
x = np.arange(-2*np.pi, 2*np.pi, 0.1)

# plot y = tan(x)
plt.plot(x, np.tan(x))

# Set the range of the axes
plt.axis([-2*np.pi, 2*np.pi, -2, 2])

# Include a title
plt.title('y = tan(x)')

# Optional grid-lines
plt.grid()

# Show the graph
plt.show()
Run Code Online (Sandbox Code Playgroud)

这是图表(包括不需要的垂直线):

在此处输入图片说明

我可以删除垂直线而不在 x 间隔中设置适当的间隙吗?

python numpy matplotlib

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

从用户机密中获取值以在 dotnet CLI 中使用

如何从用户机密中提取值以在 dotnet 命令中使用?

目前我能做的最好的事情是:

$c = dotnet user-secrets list 
Run Code Online (Sandbox Code Playgroud)

显示:AppSettings:MyConnectionString =“连接字符串的值”

$c.GetType() //tells me BaseType = System.Object, Name = String, etc.
Run Code Online (Sandbox Code Playgroud)

现在我可以尝试提取连接字符串的值,但这似乎不是一个好方法。

我想在命令中使用用户密码:

dotnet ef dbcontext scaffold <MyConnectionString> Microsoft.EntityFrameworkCore.SqlServer -o Models
Run Code Online (Sandbox Code Playgroud)

如果我手动输入它,那么数据库凭据将存储在命令行历史记录中,并且我将在 Visual Studio 中收到一条警告,了解如何通过将其包含在我的配置文件中来保护潜在的敏感信息。但是,我想使用用户机密进行开发,而不是将连接字符串添加到我的配置文件中。

entity-framework command-line-interface .net-core

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

如何从 settings.py 获取数据库详细信息

我是python的新手。我需要从另一个目录中的另一个文件访问一个 python 文件。特别是我希望能够查看名为 settings.py 的文件中的这些数据库详细信息:

DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dynamic',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '192.168.10.130',
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从另一个文件夹中的另一个文件访问这本词典作为数据库?

我试图这样做(在我的另一个项目中有效):

from django.conf import settings
dbHost = settings.DATABASES['default']['HOST']
dbUsername = settings.DATABASES['default']['USER']
dbPassword = settings.DATABASES['default']['PASSWORD']
dbName = settings.DATABASES['default']['NAME']
Run Code Online (Sandbox Code Playgroud)

请帮我。提前致谢。

django settings python-2.7

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

使用scipy执行样本的离散积分

我想从labview移植到python.

在labview中,有一个函数"Integral x(t)VI",它将一组样本作为输入,执行样本的离散积分,并根据Simpsons规则返回值列表(曲线下面积).

我试图在scipy中找到一个等效函数,例如scipy.integrate.simps,但这些函数返回整个样本集合中的求和积分,作为浮点数.

如何获得积分值列表而不是积分值之和?

我只是错误地看待问题吗?

python integration integral scipy

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

python tkinter 应用程序中的简单按键事件

我是 python 和 Tkinter 的新手。我正在寻找一个小型 GUI 应用程序,其中包含一个文本框,如果文本框内容发生任何更改,它会触发一个事件让我执行某些操作。我尝试过但未能写出这样的事件。

任何帮助将不胜感激。

python tkinter

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

您如何查看机械化正在使用的请求标头?

我试图以编程方式向表单提交一些数据.我有一个小问题,服务器"不喜欢"我发送的内容.令人沮丧的是,没有任何错误信息或任何可以帮助诊断问题的信息,所有这一切都会让我回到我点击时开始的同一页面br.submit().

当我在浏览器中手动单击提交按钮时,生成的页面显示一个小的"成功!" 信息.通过脚本提交时不会显示此类消息.此外,实际上没有更改发布到服务器.这很奇怪,我第一次遇到这种行为.

通过Mechanize文档,它表明在这些奇怪的,难以诊断的问题下,最好复制浏览器实际提交的请求标头.

我的问题是,当我打电话时,如何查看请求标题是什么br.submit()

示例代码

location = 'http://ww.mysite.com'

br = mechanize.Browser()
cj = mechanize.LWPCookieJar()
br.set_cookiejar(cj)

username = MY_USER_NAME
password = MY_PASSWORD
br.addheaders.append(('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (username, password))))

br.open(location)

br.select_form(nr=0)
br['text'] = 'MY JUNK TO SUBMIT'    #Text field. Can put anything
br['DropDown1'] = ['4']             #This is a dropdown of integer values
br['DropDown2'] = ['3']             #Also a dropdown of ints
br.submit()
Run Code Online (Sandbox Code Playgroud)

在提交表单时如何查看正在发送的标题?

python mechanize web-scraping

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