在Ubuntu Linux上开始使用Python之后,我现在已经很好地完成了我在Mac上的大部分持续工作,目前是Mac OS X 10.6.不幸的是,我忽略了如何适当地关注Python的安装方式,最终得到:
/usr/bin
(也是2.5.4,我不确定它是如何实现的)/opt/local/bin/
.这是我的默认值pip
用来安装库,最终在一些/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
不合适的地方(类似于- SRSLY?)现在我准备设置2.7和3.2,我对随意的状态不满意.那么你最喜欢的组织代码和库的方法是什么,以及你如何将Mac摔跤提交?
我想继续使用pip
,但希望有更多的控制权或至少了解哪些库安装了哪些版本,并且可以从哪里访问:我遇到了安装py.test
via的问题,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
系统使用的建议,那么实用介绍的链接是什么?
下面列出的场景的最佳做法是什么?
我们有一个应用程序,我们想支持多种货币.该软件将尊重用户的区域设置和区域设置,以指示正确的数字格式,即$ 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.
我正在寻找一种将文件上传到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)
我真的不明白我做错了什么.有人能指出我正确的方向吗?
编辑:为了防止有人想知道,我计划在实际上传工作后添加一些验证.
通常建议选择尽可能窄的数据库字段大小.我想知道这适用于SQL Server 2005 VARCHAR
列的程度:在一个VARCHAR(255)
字段中存储10个字母的英文单词不会占用比VARCHAR(10)
字段更多的存储空间.
是否有其他原因限制VARCHAR字段的大小尽可能贴近数据的大小?我在想
背景:我帮助数据集成商将数据流的设计流入数据库支持的系统.他们必须使用限制他们选择的数据类型的API.对于字符数据,只有VARCHAR(n)
n <= 255可用; CHAR
,NCHAR
,NVARCHAR
并且TEXT
都没有.我们正试图制定一些"良好做法"规则,如果对VARCHAR(255)
真正最大尺寸永远不会超过30个字节左右的数据使用甚至存在真正的损害,那么问题就出现了.
一个表的典型数据量是1-10 Mio记录,最多150个属性.查询性能(SELECT
通常具有广泛的WHERE
子句)和应用程序端检索性能是至关重要的.
这个错误是由于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)
这需要每次重新分配统计数据.
有没有人知道为什么会这样?
我正在尝试使用标准库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 …
作为练习,我一直在尝试各种方法来生成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) 我有如下数据集
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 ×4
amazon-s3 ×1
c ×1
c# ×1
casting ×1
cultureinfo ×1
currency ×1
dataframe ×1
django ×1
exception ×1
file-upload ×1
generator ×1
macos ×1
matlab ×1
pandas ×1
performance ×1
permutation ×1
pointers ×1
recursion ×1
regioninfo ×1
sorting ×1
sql ×1
sql-server ×1
types ×1
widechar ×1