小编Ugu*_*gur的帖子

Python __attrs__解释道

我正在浏览requestsKenneth Reitz 的Python 库代码(真棒!).我遇到了一个名为的Class变量__attrs__(见下文).试图通过谷歌和SymbolHound找到它的一些东西,但没有运气.

这是标准的Python吗?我在哪里可以找到更多信息?有人可以开导我吗?

来自:https://github.com/kennethreitz/requests/blob/master/requests/sessions.py

class Session(SessionRedirectMixin):
    ...

    __attrs__ = [
        'headers', 'cookies', 'auth', 'proxies', 'hooks', 'params', 'verify',
        'cert', 'prefetch', 'adapters', 'stream', 'trust_env',
        'max_redirects',
    ]

    def __init__(self):

        #: A case-insensitive dictionary of headers to be sent on each
        #: :class:`Request <Request>` sent from this
        #: :class:`Session <Session>`.
        self.headers = default_headers()
Run Code Online (Sandbox Code Playgroud)

python

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

更改 pandas.DataFrame 的样式:永久?

当我改变 a 的样式时pandas.DataFrame,例如像这样

        # color these columns
        color_columns = ['roi', 'percent_of_ath']
        (portfolio_df
            .style
            # color negative numbers red
            .apply(lambda v: 'color: red' if v < 0 else 'color: black',
                   subset=color_columns)
            # color selected cols light blue
            .apply(lambda s: 'background-color: lightblue',
                    subset=color_columns))
Run Code Online (Sandbox Code Playgroud)

应用于数据框的样式不是永久性的。

为了让它们粘在一起,我可以将部件的输出分配(portfolio_df ...给同一个数据帧,如下所示:

portfolio_df = (portfolio_df ...
Run Code Online (Sandbox Code Playgroud)

portfolio_df在 Jupyter Notebook 中显示覆盖的内容,我可以看到样式精美的 DataFrame。但是尝试从模块导入的函数内更改样式,我失败了。我在函数中构造 DataFrame,更改样式,从函数返回(现在)样式化的 DataFrame,将其显示在 Jupyter Notebook 中,我看到一个非样式化的 DataFrame。

编辑

检查样式操作的返回值的类型

s = (portfolio_df.style.apply(...

我看到这个:

>>> type(s)
pandas.io.formats.style.Styler
Run Code Online (Sandbox Code Playgroud)

所以该操作不会返回一个DataFrame,而是一个...Styler对象。我错误地认为我可以将此返回值重新分配给我的原始 DataFrame,从而覆盖它并使样式更改永久化。

问题

将样式应用于 DataFrame …

python pandas jupyter-notebook pandas-styles

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

将同步请求包装到asyncio(async/await)?

我在Python 3.6中编写了一个工具,它向几个API(带有各种端点)发送请求,并收集它们的解析来解析并将它们保存在数据库中.

我使用的API客户端具有请求URL 的同步版本,例如他们使用的

urllib.request.Request('...

或者他们使用Kenneth Reitz的Requests图书馆.

由于我的API调用依赖于请求URL的同步版本,因此整个过程需要几分钟才能完成.

现在我想将我的API调用包装在async/await(asyncio)中.我正在使用python 3.6.

我发现的所有示例/教程都要我将同步URL调用/ requests更改为异步版本(例如aiohttp).由于我的代码依赖于我未编写的API客户端(我无法更改),因此我需要保持该代码不受影响.

那么有没有办法将我的同步请求(阻塞代码)包装在async/await中以使它们在事件循环中运行?

我是Python新手中的asyncio.这在NodeJS中是不费脑子的.但是我不能用Python来解决这个问题.

python-3.x async-await python-asyncio

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

iTerm2 - 无法显示unicode字符

显然这是版本3.0.14的问题.更新到3.0.15,问题解决了.


在OS X El Capitan中,我无法在iTerm2(Build 3.0.14)中显示unicode字符.

我已将终端仿真的字符编码设置为Unicode(UTF-8)

Preferences > Profiles > Default Profile > Terminal > Terminal emulation

但是,尽管设置正确,我仍然无法显示或粘贴德国元音变音(ä,ö,ü)到终端.

我错过了什么?

Apple的终端运行完美,但我不想从iTerm2切换.

macos iterm2

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

SQLite 时间戳字段 - 转换为日期时间

编辑

因此,在MikeT的帮助下,我想出了将Apple Cocoa Core Data 时间戳值转换为 Unix 纪元值的方法:

SELECT datetime(559951200 + 978307200, 'unixepoch', 'localtime');

559951200我的Apple Cocoa Core 数据时间戳在哪里

然后,为了获取本地时间,我需要localtimedatetime(...)SQLite 中的函数添加一个附加参数。


ScanSnap Home我正在恢复Mac 扫描仪和文档管理器的 sqlite 数据库。

它位于~/Library/Application Support/PFU/ScanSnap Home/Managed/ScanSnapHome.sqlite

数据库有许多带有时间戳字段的表。我无法将这些时间戳值转换为日期/时间。

例如:我有一个日期值,可以在用户界面中看到它为2018-09-30。该日期值转换为559951200数据库中的值(时间戳字段)。

假设该数字是纪元值,我尝试通过https://www.epochconverter.com将其转换为日期值,但它会给我September 30, 1987

我缺少什么?

sqlite timestamp

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

在 Jupyter 笔记本单元格中漂亮地打印几个变量

Jupyter 笔记本 (Python) 以漂亮的打印格式返回单元格中最后一个变量的值。

使用print(df)不会输出打印得很漂亮的数据帧。但这会很好地打印df到 Jupyter 笔记本上:

In[1]:

import pandas as pd
import numpy as np

filename = "Umsaetze.csv"
csv_file = f"~/Desktop/{filename}"

# read csv into DataFrame
df = pd.read_csv(csv_file, sep=";", decimal=",")
df
Run Code Online (Sandbox Code Playgroud)

如何以漂亮的打印格式打印多个变量?

这里只会df3以漂亮的打印格式打印:

In[2]:

df1
df2
df3
Run Code Online (Sandbox Code Playgroud)

编辑

这是答案(来自:在 iPython Notebook 中将 DataFrame 显示为表格

from IPython.display import display, HTML

# Assuming that dataframes df1 and df2 are already defined:
print("Dataframe 1:")
display(df1.head())
print("Dataframe 2:")
display(df2.head())
Run Code Online (Sandbox Code Playgroud)

python jupyter-notebook

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

VS代码-pylinter无法找到模块

我开始在Mac上使用VS Code进行Python开发,但无法 pylint找不到模块。

这是我的项目文件夹结构:

project_root/
   .env
   .vscode/
       settings.json
   lib/
       # lib containing necessary modules
   sample/
       client/
           EDAMTest.py
   # many more files
Run Code Online (Sandbox Code Playgroud)

我使用已安装的virtualenv pylint。虚拟环境在终端中被激活。我code从终端中的project_root文件夹中开始code .

VS Code说它正在使用正确的解释器。我在左下角看到它说Python 3.6.1 (virtualenv)

如果我想project_root/sample/client/EDAMTest.py在终端中测试代码,可以export PYTHONPATH=../../lib; python EDAMTest.py在文件夹中通过它进行测试project_root/sample/client/

现在,如果我使用VS Code,请打开文件EDAMTest.pypylint告诉我它无法从导入模块lib

现在我的问题是:

我如何添加libPYTHONPATH在VS代码?

我发现了几种可能的方法:

  1. 创建一个.env文件(请参阅下面的[1])。
  2. PYTHONPATH.vscode/launch.json文件中指定(请参阅[2])

我发现似乎没有可行的解决方案。

我想念什么?


[1] 环境变量定义文件

这告诉我如何定义全局(env)变量。所以我指定了这个:

PYTHONPATH="~/.virtualenvs/evernote/bin/python;lib"

但这是行不通的。不过lib小号路径没有被发现pylint


[2]因此,我确实创建了一个 …

python visual-studio-code vscode-settings

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

Visual Studio Code中的Python 3.x类型提示

我在Python 3代码中使用类型提示。似乎VS Code无法正确解析类型提示,因为语法突出显示被弄乱了(文档字符串未正确突出显示,注释不再被识别)。

我已经安装了所有必需的扩展名(PythonMagicPythonplus Python for VSCode)。还有什么我想念的吗?

python python-3.x visual-studio-code

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

尝试将dict_values转换为ipdb中的列表时出错

在Python 3.5中,我试图从字典中获取值,如下所示:

data_dict.values()
# result: dict_values(['117487614', '117487614', '117487614'])
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试将其转换为列表

list(data_dict.values())
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

*** Error in argument: '(data_dict.values())'
Run Code Online (Sandbox Code Playgroud)

这些表达式正在里面执行ipdb:

ipdb> patterns_and_values
{'value_{}.mainContent_root_pwdPin': '85785226', 
'value_{}.mainContent_root_txtBenutzerkennung': '85785226', 
'value_{}.mainContent_root_txtRZBK': '85785226'}

ipdb> patterns_and_values.values()
dict_values(['85785226', '85785226', '85785226'])

ipdb> list(patterns_and_values.values())
*** Error in argument: '(patterns_and_values.values())'
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

Visual Studio 代码中的正则表达式:无效匹配失败并出现“无法识别的标志”错误

编辑:正如一些评论者指出的那样,它应该是^class (?!Migration)[A-Z][a-z]*。但 VS Code 抱怨:Error parsing regex near "ss (?!Migr' at character offset 9: Unrecognized flag: '!'. (Allowed flags: i, m, s, U, u, x.)

Visual Studio似乎支持负向预测(请参阅“使匹配无效”)。如果 VSCode 确实支持,则无法找到问题的答案。


在 VS Code 中,我尝试通过 .django 在 Django 项目中查找类定义Shift+Command+F。打开正则表达式搜索。现在我的搜索模式是这样的:

^class [A-Z][a-z]*

因此,每次出现“class Abc”(其中 Abc 是类名)都会被找到。

现在我想排除像class Migration(...)或这样的类class Command(...)

我尝试用否定的前瞻来做到这一点,如下所示:

^class (!?Migration)[A-Z][a-z]*

但这是行不通的。VS Code 将向我显示所有名为 的类class Migration(...),因此它不会排除它,而是会重点关注它。

我缺少什么?

regex visual-studio-code

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