小编chr*_*yss的帖子

在Mac OS X上控制Python - 设置环境和库

在Ubuntu Linux上开始使用Python之后,我现在已经很好地完成了我在Mac上的大部分持续工作,目前是Mac OS X 10.6.不幸的是,我忽略了如何适当地关注Python的安装方式,最终得到:

  • Python 2.6.1(Mac默认版本?)中/usr/bin(也是2.5.4,我不确定它是如何实现的)
  • Python的2.6.5通过安装MacPorts的/opt/local/bin/.这是我的默认值
  • pip用来安装库,最终在一些/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/不合适的地方(类似于- SRSLY?)
  • 否则,主要是TextMate和Git进行版本控制.Django和Google App Engine等......

现在我准备设置2.7和3.2,我对随意的状态不满意.那么你最喜欢的组织代码和库的方法是什么,以及你如何将Mac摔跤提交?

我想继续使用pip,但希望有更多的控制权或至少了解哪些库安装了哪些版本,并且可以从哪里访问:我遇到了安装py.testvia的问题,pip只能从中加载它过时的2.6.1 Python,而不是我当前的2.6.5.MacPorts有python_select,但它没有太大的帮助:

reason: chris$ python_select -l
Available versions:
current none python26 python26-apple
Run Code Online (Sandbox Code Playgroud)

我问过的大多数Python人都没有使用我不太喜欢的MacPorts,而是Mac Mac的股票python.org.我也听过virtualenv系统使用的建议,那么实用介绍的链接是什么?

python macos development-environment

21
推荐指数
1
解决办法
7638
查看次数

最佳实践 - 格式化多种货币

下面列出的场景的最佳做法是什么?

我们有一个应用程序,我们想支持多种货币.该软件将尊重用户的区域设置和区域设置,以指示正确的数字格式,即$ 10,000.00或10.000,00₴等.

但是,我们希望能够根据货币ID(可能是三个字母的ISO4217代码)格式化不同的数字.我们的想法是使用每种货币在数据库中存储一个表,然后请求用户选择将使用的货币符号.然后,程序将根据区域设置/区域设置格式化所有数字,但将使用我们程序中定义的货币符号.

因此,给出以下数值和货币
10000 AUD
5989.34 USD
450 EUR

该计划将输出
$ 10,000.00
$ 5,989.34
€450.00

或者使用区域设置将数字格式化为#####,## $结果将是;
10000,00 $
5989,34 $
450,00€

尊重区域设置/区域编号格式但显示不同的货币,最佳做法是什么?

我希望这是有道理的.

使用的技术是c#.NET 2.0.

c# currency regioninfo cultureinfo internationalization

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

如何使用django(python)和s3上传文件?

我正在寻找一种将文件上传到s3的方法.我正在使用django.我目前正在使用amazon的python库上传以下代码:

视图:

def submitpicture(request):
    fuser = request.session["login"]

    copied_data = request.POST.copy()
    copied_data.update(request.FILES)
    content_type = copied_data['file'].get('content-type')
    ffile = copied_data['file']['content']
    key = '%s-%s' % (fuser, ''.join(copied_data['file']['filename'].split(' ')))
    site_s3.save_s3_data(key, ffile, content_type)
Run Code Online (Sandbox Code Playgroud)

模板:

<form action="/submitpicture/" method="POST">
    <input type="file" id="file" name="file" />
    <input type="submit" value="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

但是,当我实际尝试运行它时,我收到以下错误:

"Key 'file' not found in <QueryDict: {}>"
#MultiValueDictKeyError
Run Code Online (Sandbox Code Playgroud)

我真的不明白我做错了什么.有人能指出我正确的方向吗?

编辑:为了防止有人想知道,我计划在实际上传工作后添加一些验证.

python django file-upload amazon-s3

12
推荐指数
2
解决办法
9382
查看次数

为什么要使用较短的VARCHAR(n)字段?

通常建议选择尽可能窄的数据库字段大小.我想知道这适用于SQL Server 2005 VARCHAR列的程度:在一个VARCHAR(255)字段中存储10个字母的英文单词不会占用比VARCHAR(10)字段更多的存储空间.

是否有其他原因限制VARCHAR字段的大小尽可能贴近数据的大小?我在想

  • 性能:在选择,过滤和排序数据时使用较小的n是否有优势?
  • 内存,包括在应用程序端(C++)?
  • 样式/验证:您认为限制colunm大小以强制非敏感数据导入失败(例如200个字符的姓氏)有多重要?
  • 还要别的吗?

背景:我帮助数据集成商将数据流的设计流入数据库支持的系统.他们必须使用限制他们选择的数据类型的API.对于字符数据,只有VARCHAR(n)n <= 255可用; CHAR,NCHAR,NVARCHAR并且TEXT都没有.我们正试图制定一些"良好做法"规则,如果对VARCHAR(255)真正最大尺寸永远不会超过30个字节左右的数据使用甚至存在真正的损害,那么问题就出现了.

一个表的典型数据量是1-10 Mio记录,最多150个属性.查询性能(SELECT通常具有广泛的WHERE子句)和应用程序端检索性能是至关重要的.

sql sql-server types

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

意外减慢了就地修改数组的函数

这个错误是由于Matlab太聪明了.

我有类似的东西

for k=1:N
    stats = subfun(E,k,stats);
end
Run Code Online (Sandbox Code Playgroud)

其中stats是一个1xN阵列,N=5000比方说,和subfun计算stats(k)E,并且它填充到统计

function stats = subfun(E,k,stats)
    s = mean(E);
    stats(k) = s;
end
Run Code Online (Sandbox Code Playgroud)

当然,来回传递大数组会有一些开销,只是为了填充其中一个元素.然而,在我的情况下,开销是可以忽略的,我更喜欢这个代码而不是

for k=1:N
    s = subfun(E,k);
    stats(k) = s;
end
Run Code Online (Sandbox Code Playgroud)

我的偏好是因为我实际上有更多的任务而不仅仅是stats.此外,一些任务实际上更复杂.

如上所述,开销可以忽略不计.但是,如果我做一些微不足道的事情,比如这个无关紧要的if语句

for k=1:N
    i = k;
    if i>=1
        stats = subfun(E,i,stats);
    end
end
Run Code Online (Sandbox Code Playgroud)

然后,在subfun内发生的任务突然变为"永远"(它比N线性地增加得快得多).这是任务,而不是永远的计算.事实上,它甚至比以下荒谬更糟糕subfun

function stats = subfun(E,k,stats)
    s = calculation_on_E(E);
    clear stats
    stats(k) = s;
end
Run Code Online (Sandbox Code Playgroud)

这需要每次重新分配统计数据.

有没有人知道为什么会这样?

performance matlab

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

qsort的第4个参数的"不兼容的指针类型"编译器警告

我正在尝试使用标准库qsort来排序宽字符数组:

wchar_t a = L'a';
wchar_t a1 = L'ä';
wchar_t b = L'z';
wchar_t chararray[] = {b, a, a1};  
length = wcslen(chararray);

qsort(chararray, length, sizeof(wchar_t), wcscoll);
Run Code Online (Sandbox Code Playgroud)

现在我认为所涉及的功能有这些原型:

int wcscoll(const wchar_t *ws1, const wchar_t *ws2);
void qsort(void *base, size_t num, size_t size, int (*comp_func)(const void *, const void *))
Run Code Online (Sandbox Code Playgroud)

结果完全符合预期,但为什么我得到编译器警告" passing argument 4 of ‘qsort’ from incompatible pointer type"?我怎么能投射wcscoll以适应原型?

如果我定义并传入一个单独的比较函数,警告就会消失:

int widecharcomp(const void *arg1, const void *arg2)
{
    return wcscoll(arg1, arg2);
}
Run Code Online (Sandbox Code Playgroud)

...但是当参数不是类型时,这个看起来应该有错误处理wchar_t …

c sorting pointers casting widechar

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

停止递归生成器和排列

作为练习,我一直在尝试各种方法来生成Python中列表的所有排列 - 递归,非递归...... - 并将性能与之比较itertools.permutations().但是我遇到了递归方法的生成器版本的问题,它没有完全干净地完成StopIteration异常,而是抛出一个IndexError:

def spawnperms(alist):
    """same algorithm as recursive option, but a generator"""
    if (alist == []):
        yield []
    for perm in spawnperms(alist[:-1]):
        for i in range(len(perm)+1):
            yield perm[:i] + [alist[-1]] + perm[i:]
Run Code Online (Sandbox Code Playgroud)

从Python解释器调用它:

>>> for i in spawnperms(range(3)):
...     print i
... 
[2, 1, 0]
[1, 2, 0]
[1, 0, 2]
[2, 0, 1]
[0, 2, 1]
[0, 1, 2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module> …
Run Code Online (Sandbox Code Playgroud)

python recursion exception generator permutation

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

为 Kruskal-Wallis H 测试 python 创建向量

我有如下数据集

df = pd.DataFrame({'numbers':range(9), 'group':['a', 'b', 'c']*3})

 group numbers
0   a   0
1   b   1
2   c   2
3   a   3
4   b   4
5   c   5
6   a   6
7   b   7
8   c   8
Run Code Online (Sandbox Code Playgroud)

我想创建向量

a = [0, 3, 6]
b = [1, 4, 7]
c = [2, 5, 8]
Run Code Online (Sandbox Code Playgroud)

用于 Kruskal-Wallis H 测试 python

stats.kruskal(a, b, c)
Run Code Online (Sandbox Code Playgroud)

或者可能是 R 中的类似物(数字〜组)

python dataframe pandas kruskal-wallis

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