小编Lon*_*Rob的帖子

unittest.main()使Spyder中的python解释器崩溃

我有一个python脚本,其中包含一个unittest.TestCase,一个setUp()函数和少量的test_foo_does_bar()-type函数。

脚本结束如下:

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

当我在Spyder中运行此脚本时(请参阅下面的配置详细信息),解释器将在以下行停止:

----------------------------------------------------------------------
Ran x tests in x.xxxs

FAILED (failures=x)
Run Code Online (Sandbox Code Playgroud)

Ctrl + C或Ctrl + D都无法解救解释器并使我返回提示。从命令提示符运行的相同脚本正常终止。

这是Spyder中的错误还是我遗漏了一些东西?

设置信息: Spyder 2.2.3 Python 2.7.5 64位。Windows上的Qt 4.8.4,PyQt4(API v2)4.9.6

python spyder python-unittest

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

Vim:在用户定义的命令中发出正常模式命令

我确定这会在某个地方被问到,但我终生都找不到它,而且它不在Vim 文档的“定义命令行命令”部分中。

我想创建一个用户定义的命令,它将foo在当前单词之前插入单词。

(注意:我希望它是一个函数,因为我不相信自己会记住另一个快捷键。我知道如何使用noremap...)

在我的.vimrc补充:

command AddFoo bifoo<esc>w
Run Code Online (Sandbox Code Playgroud)

但是当我输入时,:AddFoo我得到Not an editor command: bifoow.

是否可以有一个发出正常模式命令的功能?

vim

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

将小数字显示为零

我经常被大熊猫中非常小的浮动值所欺骗,这些浮动值"实际为零".

例如,乍看之下很难看到以下情况Series:

are_they_zero
a   -5.960464e-08 # This number is small
b   -2.384186e+07 # This one isn't
c    2.384186e-07
d   -5.960464e+08
e    8.940697e-08
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉大熊猫显示号码,如5.960464e-08作为0

(显然,这将取决于应用程序是否这是一个好主意,但假设,在我的情况下,它是.)

python pandas

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

如何使用多个条件过滤Python列表?

我有这个列表理解,它返回列表中的元素,lst_fcflds如果它们不在列表中RROPFields:

nfld_rrop = [i for i in lst_fcflds if i not in RROPFields]

并且想要一个过滤器,这样如果OBJECTID或者 SHAPE在lst_fclfds中,它们也不会被返回 - 如:

nfld_rrop = [i for i in lst_fcflds if i not in RROPFields and not in ["OBJECTID","SHAPE"]]

python list

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

当值是列表时交换字典键和值

这个问题这个问题类似,我想交换字典中的键和值。

不同的是,我的值是列表,而不仅仅是单个值。

因此,我想转向:

In [120]: swapdict = dict(foo=['a', 'b'], bar=['c', 'd'])

In [121]: swapdict
Out[121]: {'bar': ['c', 'd'], 'foo': ['a', 'b']}
Run Code Online (Sandbox Code Playgroud)

进入:

{'a': 'foo', 'b': 'foo', 'c': 'bar', 'd': 'bar'}
Run Code Online (Sandbox Code Playgroud)

假设我很高兴我的价值观是独一无二的。

python python-2.7

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

导出带标签的双&lt;dbl + lbl&gt;数据类型

导入SPSS .sav文件后,生成的小滴报告如下:

# A tibble: 88,528 x 7
       CRY12    CRYOX7   INDS07M  INECAC05    SOC10M    URESMC     GOR9D
   <dbl+lbl> <dbl+lbl> <dbl+lbl> <dbl+lbl> <dbl+lbl> <dbl+lbl>     <chr>
 1       997       578        NA        31        NA        11 E12000009
 2       921       926        NA        30        NA        11 E12000009
 3       921       926        NA        31        NA        11 E12000009
 4       372       372        NA        25        NA        11 E12000009
 5       372       372        17         1      2211        11 E12000009
 6       372       372        NA        34        NA        11 E12000009
 7       921       926        18         2      3411        11 E12000009
 8 …
Run Code Online (Sandbox Code Playgroud)

r tidyverse tibble

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

将一个项目(单例)的元组减少到其值

是否有内置方法将单例元组减少到(仅)值?

我可以使用以下函数实现此目的:

def foo(tup):
    if len(tup) == 1:
        return tup[0]
    return tup
Run Code Online (Sandbox Code Playgroud)

这会将单例减少到其值并保留非单例元组:

>>> x = (3, )
>>> foo(x)
3
>>> x = (3, 4)
>>> foo(x)
(3, 4)
Run Code Online (Sandbox Code Playgroud)

但这似乎是一个相当低级别的任务,我敢打赌它已经潜伏在Python标准库的某个地方.功能类型让我想起numpy.squeeze但是这给我们留下了array可能不是我们想要的东西.

python

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

pyarrow.lib.ArrowIOError:无效的 Parquet 文件大小为 0 字节

我试图做这样的事情这样,阅读从S3存储文件的列表到pyarrow表。

如果我指定文件名,我可以这样做:

from pyarrow.parquet import ParquetDataset
import s3fs
dataset = ParquetDataset(
    "s3://path/to/file/myfile.snappy.parquet,
    filesystem=s3fs.S3FileSystem(),
)
Run Code Online (Sandbox Code Playgroud)

一切都按预期进行。但是,如果我这样做:

dataset = ParquetDataset(
    "s3://path/to/file,
    filesystem=s3fs.S3FileSystem(),
)
Run Code Online (Sandbox Code Playgroud)

我得到:

pyarrow/_parquet.pyx:1036: in pyarrow._parquet.ParquetReader.open                                                                                                                                                                                                              
pyarrow.lib.ArrowIOError: Invalid Parquet file size is 0 bytes  
Run Code Online (Sandbox Code Playgroud)

python boto3 pyarrow

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

Helm Postgres 密码认证失败

我使用自述文件中显示的示例安装 Bitnami Helm 图表:

helm install my-db \
  --namespace dar \
  --set postgresqlPassword=secretpassword,postgresqlDatabase=my-database \
  bitnami/postgresql
Run Code Online (Sandbox Code Playgroud)

然后,按照安装成功后打印的说明中显示的说明将端口转发到端口 5432,然后尝试连接:

PGPASSWORD="secretpassword" psql --host 127.0.0.1 -U postgres -d my-database -p 5432
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

psql: error: could not connect to server: FATAL:  password authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

怎么会这样?Helm 图表有问题吗?

postgresql kubernetes kubernetes-helm

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

创建一个默认值为零的默认值(0)

此问题类似,我想创建一个collections.defaultdict默认值为零来计算元组列表的元素:

tuples = [('foo', 5), ('foo', 5), ('bar', -5), ('bar', -2)]
totals = defaultdict(0)
for t in tuples:
    totals[t[0]] += t[1]
Run Code Online (Sandbox Code Playgroud)

但是defaultdict(0)说:

TypeError: first argument must be callable
Run Code Online (Sandbox Code Playgroud)

我怎么能创造一个"可赎回"的零?

python python-2.7

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

列表理解 - 使用每个元素两次

我有两个列表如下:

first = [1, 2, 3] # integers
second = ["A", "B"]
Run Code Online (Sandbox Code Playgroud)

我想生成以下列表,交替A和B.请注意,生成的iterable比输入的iterables长:

["1A", "1B", "2A", "2B", "3A", "3B"]
Run Code Online (Sandbox Code Playgroud)

我目前正在使用itertools:

[str(x1) + x2 for x1, x2 in itertools.product(first, second)]
Run Code Online (Sandbox Code Playgroud)

但这是"最好的"方式吗?有没有需要导入的解决方案?

python

-1
推荐指数
1
解决办法
181
查看次数

C#INSERT TO访问数据库创建2个数据库条目而不是1

我已经创建了一个C#程序,用于将数据插入Access数据库,其中包含一些众所周知的代码.

每次运行代码时,我都会在数据库中获得两个条目

namespace Quotes
{
public partial class QuotesForm : Form
{
    private OleDbConnection quotescon;
    private OleDbCommand oledbcmd = new OleDbCommand();
    private string connect = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=H:\Quotes.mdb;Persist Security Info=False";

    public QuotesForm()
    {
        quotescon = new OleDbConnection(connect);
        InitializeComponent();
    }

    private void btn_insert_Click(object sender, EventArgs e)
    {
        int quote = Convert.ToInt32(txtb_Quotenumber.Text);
        quotescon.Open();
        oledbcmd.Connection = quotescon;
        oledbcmd.CommandText = "insert into table1 ([Quote number], Account, Made, Approved) values ('" + quote + "','" + this.txtb_name.Text + "','" + this.date_created.Text + "','" + this.comboBox1.Text +"');"; …
Run Code Online (Sandbox Code Playgroud)

c# mysql ms-access visual-studio-2010

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