小编dar*_*ith的帖子

%ul和%lu C格式说明符之间有什么区别?

在"C Primer Plus"的示例中,作者使用了%ul格式说明符(在scanf和printf中)用于unsigned long.当我尝试概括问题时,似乎%ul在我的计算机中出错了.但使用%lu解决了这个问题.

实际上,我不想关注问题和代码行,而是想知道%ul和之间的区别%lu.也许我可以弄清楚出了什么问题.

搜索并没有给我一些有用的东西(除了"它们是不同的").

任何解释或链接/参考表示赞赏.

c format-specifiers

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

如何将原始javascript对象转换为python字典?

屏幕抓取一些网站时,我从<script>标签中提取数据.
我得到的数据不是标准JSON格式.我不能用json.loads().

# from
js_obj = '{x:1, y:2, z:3}'

# to
py_obj = {'x':1, 'y':2, 'z':3}
Run Code Online (Sandbox Code Playgroud)

目前,我regex用来将原始数据转换为JSON格式.
但是当我遇到复杂的数据结构时,我感觉非常糟糕.

你有更好的解决方案吗?

javascript python json web-scraping

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

Python setuptools正在从Windows上的路径参数中删除斜杠

我正在尝试安装setuptools包含console_scripts在Windows 7上的软件包.我正在尝试将我的值更改PYTHONUSERBASE为安装到带有--user标志的自定义目录中.如果我在值中使用反斜杠PYTHONUSERBASE,如

set PYTHONUSERBASE=C:\testing
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,如果我使用正斜杠,就像在

set PYTHONUSERBASE=C:/testing
Run Code Online (Sandbox Code Playgroud)

软件包本身安装到正确的位置,但是console_scripts(并且只有console_scripts)安装到C:testing\Scripts.显然,当存在正斜杠时,setuptools将路径视为仅用于console_scripts路径的相对路径.在我的真实包中,我正在从配置文件中读取值,所以我真的不必处理规范化路径分隔符,因为它也需要在Linux上工作.为了测试,我有一个包含该结构的包

|-- setup.py
|-- foobar\
|---- __init__.py
|---- __main__.py
Run Code Online (Sandbox Code Playgroud)

中的代码__main__.py

def main(): print('This is the main function')
Run Code Online (Sandbox Code Playgroud)

setup.py看起来像:

from setuptools import setup

setup(
    name='foobar',
    version='1.0.0',
    packages=['foobar'],
    entry_points={
        'console_scripts': [
            'foobar=foobar.__main__:main',
        ],
    },
)
Run Code Online (Sandbox Code Playgroud)

为什么要setuptools删除路径中的第一个正斜杠,我该如何解决?我认为这个问题与我的问题有关,但我认为它不能解决它:Windows上的Python os.path.join

python setuptools

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

如何在python中"将事后"附加到一个函数的装饰器?

我理解python中函数的装饰器(我可能错了)的方法是,它们应该添加副作用并修改函数的返回值.现在装饰器被添加到要装饰的函数的函数定义之上或通过赋值.这是一个小例子:

def print_args_decor(function):
    def wrapper(*args, **kwargs):
        print 'Arguments:', args, kwargs         # Added side-effect
        return function(*args, **kwargs)*5       # Modified return value
    return wrapper

@print_args_decor
def do_stuff(strg, n=10):
    """Repeats strg a few times."""
    return strg * n

new_decorated_func = print_args_decor(do_stuff)  # Decoration by assignment

print do_stuff('a', 2) # Output: aaaaaaaaaa
Run Code Online (Sandbox Code Playgroud)

现在,如何将装饰器附加到其他地方定义的函数,理想情况下保留原始函数的名称和文档字符串(如同functools.wraps)?例如,我sqrt()从Python的数学模块导入函数,并想要装饰它,我该怎么做呢?

from functools import wraps
from math import sqrt

def print_args_decor(function):
    @wraps(function)
    def wrapper(*args, **kwargs):
        print 'Arguments:', args, kwargs         # Added side-effect
        return function(*args, …
Run Code Online (Sandbox Code Playgroud)

python decorator python-2.7 python-decorators

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

将新列添加到现有csv文件

我有一个5列的csv文件,我想在第6列添加数据.我拥有的数据是一个数组.

现在,我所拥有的代码只会在csv文件中已经存在的所有数据之后插入我想要的第6列数据.

比如我有:

wind, site, date, time, value
10, 01, 01-01-2013, 00:00, 5.1
89.6    ---> this is the value I want to add in a 6th column but it puts it after all the  data from the csv file
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码:

csvfile = 'filename'
with open(csvfile, 'a') as output:
    writer = csv.writer(output, lineterminator='\n')
    for val in data:
        writer.writerow([val])
Run Code Online (Sandbox Code Playgroud)

我认为使用'a'会将数据附加到一个新列中,但它只是将它放在('下')所有其他数据之后......我不知道该怎么办!

python

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

八度,如何保存情节图?

我需要保存一个情节.这是我的代码,我不知道为什么它不起作用.

hold on;
plot(x1, y2)
plot(x1, y2)
print -djpg image.jpg
Run Code Online (Sandbox Code Playgroud)

屏幕输出中的图是正确的,但文件中的输出是不同的:它只保存没有我的点的空图.

这是我在文件中的输出: 在此输入图像描述

plot image save octave

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

如何使用pytest为覆盖率报告设置不同的html输出目录?

使用pytests覆盖是一个非常有用的工具.

Html报告允许很好的输出,但是通过命令行,找不到修改默认输出目录的选项(htmlcov)

示例命令行:

python -m pytest lib_being_tested\tests --cov lib_being_tested.module --cov-report=html
Run Code Online (Sandbox Code Playgroud)

python coverage.py pytest

8
推荐指数
2
解决办法
3757
查看次数

Conda虚拟环境在Windows下不会改变

我已经为Windows安装了Anaconda 2.2.0并通过以下方式创建了一个虚拟环境:

> conda create -n my-env anaconda
Run Code Online (Sandbox Code Playgroud)

环境是成功创建的,我在我的envinronments列表中看到它(实际上目录在Anaconda\envs ..)

> conda info -e
# conda environments:
#
my-env                   D:\Anaconda\envs\my-env
root                  *  D:\Anaconda
Run Code Online (Sandbox Code Playgroud)

但是,当运行activate.bat脚本来切换envinronment时,虽然看起来成功但实际上并没有进行切换:

> activate.bat my-env
Activating environment "astropy-dev"...
> conda list -e
# conda environments:
#
my-env                   D:\Anaconda\envs\my-env
root                  *  D:\Anaconda
Run Code Online (Sandbox Code Playgroud)

随着*指示活跃的环境.

我在Windows上看到了conda激活的一些问题,但没有发现这个特定的问题.

有关详细信息:我希望复制整个Anaconda软件包分发版,然后在一个软件包上安装开发版.

python windows anaconda conda

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

Cerberus自定义规则和自定义验证器有什么区别?

文档中,我不清楚自定义规则和自定义验证器的用例有何不同.在文档中给出的示例中,唯一的区别是一个额外的if语句,用于检查is_odd自定义规则中的值.我应该何时更喜欢自定义规则,何时应该更喜欢自定义验证器?


自定义规则

schema = {'amount': {'isodd': True, 'type': 'integer'}}
from cerberus import Validator

class MyValidator(Validator):
    def _validate_isodd(self, isodd, field, value):
        """ Test the oddity of a value.

        The rule's arguments are validated against this schema:
        {'type': 'boolean'}
        """
        if isodd and not bool(value & 1):
            self._error(field, "Must be an odd number")
Run Code Online (Sandbox Code Playgroud)

自定义验证器

from cerberus import Validator
schema = {'amount': {'validator': 'oddity'}}

class AValidator(Validator):
    def _validator_oddity(self, field, value):
       if value & 1:
           self._error(field, "Must be …
Run Code Online (Sandbox Code Playgroud)

python cerberus

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

ImportError:没有名为'matplotlib'的模块 - 使用Anaconda tensorflow环境

我只是想学习Tensorflow,但我对Python很新,所以我使用Anaconda我创建了一个conda环境:

$ conda create ?n tensorflow python =3.5
Run Code Online (Sandbox Code Playgroud)

当然我激活了我的conda环境

$ source activate tensorflow
Run Code Online (Sandbox Code Playgroud)

然后我在Spyder玩了一下,试图绘制一个MNIST数字(我的导师的复制粘贴代码经过多次测试),当然包括

import matplotlib.pyplot as plt
[...]
plt.plot(number)
Run Code Online (Sandbox Code Playgroud)

但用bash执行Python文件给了我:

(tensorflow) leon@leon-linux:~/ANNsCourse/Session1$ python helloWorld.py
Traceback (most recent call last):
  File "helloWorld.py", line 10, in <module>
    import matplotlib.pyplot as plt
ImportError: No module named 'matplotlib'
Run Code Online (Sandbox Code Playgroud)

我现在很困惑,因为(tensorflow)在bash中显然表示我的conda tensorflow环境有效(至少从我的理解).另外,根据我的理解,conda应该内置matplotlib,对吧?它还应该在我的conda tensorflow环境中加载它,对吧?这就是我的导师的幻灯片所说的

没有必要安装更多的软件包,如numpy或matplotlib,因为Anaconda已经包含了它们的当前版本.

以及我从Google Googled和StackOverflowed所能获得的东西.谷歌搜索和StackOverflowing都没有给我任何好的答案(也可能只是因为我还不够了解).

我最好的猜测是我仍然需要将matplotlib包含在我的tensorflow conda环境中,但这与我的导师和谷歌相矛盾,而我也不知道如何做到这一点.

编辑:conda list给了我matplotlib不在我的张量流环境中,所以我去了

conda install matplotlib
Run Code Online (Sandbox Code Playgroud)

我仍然担心我的conda tensorflow环境有问题,默认情况下matplotlib不应该在那里吗?它还告诉我:

Package plan for installation in environment /home/leon/.conda/envs/tensorflow:

The following NEW packages will be INSTALLED:

cycler:           0.10.0-py35_0 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib importerror conda tensorflow

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