小编RPi*_*ess的帖子

如何从Visual Studio代码中执行Python代码

Visual Studio Code最近发布了,我喜欢它的外观和它提供的功能,所以我想我会试一试.

我从下载页面下载了应用程序,将 其解决了一些功能......然后意识到我不知道如何实际执行我的任何Python代码!

我非常喜欢Visual Studio Code的外观和可用性/功能,但我似乎无法找到如何运行我的Python代码,这是一个真正的杀手,因为这是我编程的主要内容.

有谁知道是否有办法在Visual Studio代码中执行Python代码?

python visual-studio-code

181
推荐指数
19
解决办法
33万
查看次数

Python - 使用'set'查找列表中的不同项

我需要在Python中比较两个列表,并且我知道使用该set命令来查找类似的项目,但是我是否可以使用另一个命令来自动比较它们,而不是必须为它编写代码?

我想找到不属于每个项目的项目.说清单一如下:

[1, 2, 3, 4, 5, 6] 
Run Code Online (Sandbox Code Playgroud)

列表二是:

[1, 2, 3, 4, 6]
Run Code Online (Sandbox Code Playgroud)

我希望找到5列表中缺少的,希望通过命令,但我知道如何循环比较.

python compare

38
推荐指数
3
解决办法
4万
查看次数

UnicodeEncodeError:'ascii'编解码器无法对位置0中的字符进行编码:序数不在范围内(128)

我正在使用一个使用剪刀字符(9986 - ✂)的Python脚本,我正在尝试将代码移植到Mac,但我遇到了这个错误.

当从IDLE(Python 3.2.5 - OS X 10.4.11 iBook G4 PPC)运行时,剪刀字符显示正常,并且代码在Ubuntu 13.10上运行完全正常,但是当我尝试在终端中运行它时,我得到此错误/追溯:

Traceback (most recent call last):
  File "snippets-convert.py", line 352, in <module>
    main()
  File "snippets-convert.py", line 41, in main
    menu()
  File "snippets-convert.py", line 47, in menu
    print ("|\t ",snipper.decode(),"PySnipt'd",snipper.decode(),"\t|")
UnicodeEncodeError: 'ascii' codec can't encode character '\u2702' in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

以及给我问题的代码:

print ("|\t ",chr(9986),"PySnipt'd",chr(9986),"\t|")

这是否表示终端无法显示该字符?我知道这是一个旧系统,但它是我目前唯一使用的系统.操作系统的时代是否会干扰该计划?

我读过这些问题:

是什么导致了这个错误?它是系统/操作系统的时代,Python的版本,还是一些编程错误?

编辑 …

python encoding python-3.2

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

Curses返回AttributeError:'module'对象没有属性'initscr'

在Python网站上关注Curses编程HowTo,但我遇到了一个相当离奇的问题.

我的代码目前很短,实际上没有做任何事情,因为这个错误,我还没能继续前进.这是我的代码:

import curses
#from curses import wrapper

stdscr = curses.initscr()
curses.noecho()
curses.cbreak()

stdscr.keypad(True)

def main(stdscr):

    begin_x = 20; begin_y = 7
    height = 5; width = 40
    win = curses.newwin(height, width, begin_y, begin_x)

    stdscr.refresh()
    stdscr.getkey()

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

跟踪:

Traceback (most recent call last):
  File "curses.py", line 1, in <module>
    import curses
  File "/home/nate/Documents/Programming/Python/curses.py", line 4, in <module>
    stdscr = curses.initscr()
AttributeError: 'module' object has no attribute 'initscr'
Run Code Online (Sandbox Code Playgroud)

我评论说from curses …

python curses

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

在 Rust 2018 中使用模块时如何解决错误“根中没有模块”?

我正在开发一个项目,该项目在src/. 我目前正在使用 Rust 2018 版,其中的主要变化之一是处理 import/ usestatements

我的模块代码都正常工作,但是当我开始将它放在一起用于整个项目时,我开始收到此错误:

error[E0432]: unresolved import `crate::lexer`
 --> src/main.rs:1:5
  |
1 | use crate::lexer;
  |     ^^^^^^^^^^^^ no `lexer` in the root
Run Code Online (Sandbox Code Playgroud)

目前,我的代码设置如下:

src/
 | main.rs
 | lexer/
    | mod.rs
    | lexer.rs
Run Code Online (Sandbox Code Playgroud)

词法分析器/词法分析器.rs

pub fn lex_stuff() -> Vec<String> { vec![String::new("test")] }
Run Code Online (Sandbox Code Playgroud)

词法分析器/mod.rs

pub mod lexer;
Run Code Online (Sandbox Code Playgroud)

主文件

use crate::lexer;

fn main() {
    println!("Hello, world!");
    lexer::lexer::lex_stuff();
}
Run Code Online (Sandbox Code Playgroud)

我试图通过将语句更改use lexer为以及use self::lexer并添加来解决此问题extern crate lexer(这显然不起作用,但到底是怎么回事,我想我会尝试一下)。然而,这些都没有奏效。

我该怎么做才能解决no 'lexer' in the …

module rust rust-2018

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

Gtk3 TextBuffer.serialize()返回带有格式标签的文本,即使视觉上没有

我正在我的项目中使用Gtk TextView/TextBuffer,用户可以通过选择正确的切换按钮来输入富文本(粗体/斜体/下划线).

问题是,如果我将下划线或斜体Pango标志应用于TextView中的文本,然后关闭斜体/下划线并输入更多,然后通过TextBuffer.serialize()未格式化的文本(在TextView中明显未格式化)获取带有这些标记的文本返回时带有下划线/斜体标签.

你可以在这里看到:(注意,为了便于阅读,我使用BeautifulSoup将标签简化为HTML副本,但实际的位置/类型根本没有被编辑过.)

这是代码(需要安装Python3的Gtk3和BS4):

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk, Pango

import smtplib, mimetypes
from bs4 import BeautifulSoup

class Handler():

    def __init__(self):
        global html
        self.state = 0

    def onDeleteWindow(self, *args):
        Gtk.main_quit(*args)

    def onSendClicked(self, button):
        start, end = textBodyBuffer.get_bounds()
        self.content = textBodyBuffer.get_text(start, end, True)

        # Below is the serialization code for exporting with format tags
        format = textBodyBuffer.register_serialize_tagset() 
        exported = textBodyBuffer.serialize(textBodyBuffer, format, start, end)

        exported = exported.decode("latin-1")

        exported = exported.split('<text_view_markup>', 1)
        del exported[0]
        exported[0] = …
Run Code Online (Sandbox Code Playgroud)

python gtk formatting gtk3

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

覆盖 Flask-Security 的 /login 端点

我在一个网站上工作,用户通过 OAuth 登录,而不是基于密码的系统。

因此,Flask-Security 的默认登录页面实际上不适用于我的用例,因为我需要/loginOAuth 设置的端点。/login通过更改SECURITY_LOGIN_URL设置选项,我能够做到这一点,这样我的路线就不会被 Flask-Security 覆盖。

这一切正常,OAuth 登录页面显示并返回所有需要的信息。

问题出现了,因为我也在尝试使用@login_required装饰器。

如果用户没有登录,而不是重定向到我的/login网页,该@login_required装饰被重定向到烧瓶安全的页面。

显然,配置端点在这种情况下无济于事。

是否可以强制 Flask-Security 使用我的登录路由 (OAuth) 而不是其页面?

这是一些示例代码,显示了我正在谈论的 Flask-Security 覆盖定义的路由:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, request
from flask_security import (Security, SQLAlchemyUserDatastore,
                            UserMixin, RoleMixin, login_required,
                            login_user, logout_user, current_user)
from passlib.context import CryptContext
import os


class Config:
    basedir = os.path.abspath(os.path.dirname(__file__))

    SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db')
    SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
    SQLALCHEMY_TRACK_MODIFICATIONS = …
Run Code Online (Sandbox Code Playgroud)

python oauth flask flask-security

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

如何在Python 3.4中隐藏Gtk + FileChooserDialog?

我有一个程序设置,以便它自己显示FileChooserDialog(没有主Gtk窗口,只有对话框).

我遇到的问题是,即使用户选择了文件并且程序似乎继续执行,对话框也不会消失.

这是一个展示此问题的代码段:

from gi.repository import Gtk

class FileChooser():

    def __init__(self):

        global path

        dia = Gtk.FileChooserDialog("Please choose a file", None,
            Gtk.FileChooserAction.OPEN,
            (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
             Gtk.STOCK_OPEN, Gtk.ResponseType.OK))

        self.add_filters(dia)

        response = dia.run()

        if response == Gtk.ResponseType.OK:
            print("Open clicked")
            print("File selected: " + dia.get_filename())
            path = dia.get_filename()
        elif response == Gtk.ResponseType.CANCEL:
            print("Cancel clicked")

        dia.destroy()

    def add_filters(self, dia):
        filter_any = Gtk.FileFilter()
        filter_any.set_name("Any files")
        filter_any.add_pattern("*")
        dia.add_filter(filter_any)

dialog = FileChooser()

print(path)

input()
quit()
Run Code Online (Sandbox Code Playgroud)

当程序退出quit()函数调用时,对话框才会消失.

我也试过了dia.hide(),但这也不起作用 - 代码继续运行时对话框仍然可见.

使对话框消失的正确方法是什么?

编辑:我已经知道在没有父窗口的情况下制作Gtk对话框是不鼓励的.但是,我不想处理必须让用户关闭其中没有任何内容的窗口,而只是作为对话框的父窗口.

是否有办法制作一个不可见的父窗口,然后在对话框消失时退出Gtk主循环?

python gtk gtk3

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

Python smtplib send_message()失败,返回AttributeError:'str'对象没有属性'get_all'

我正在开发一个项目,我必须使用Python 3.4中的smtplib和email模块发送电子邮件.

我能够自己创建电子邮件,我可以连接到服务器,但它会返回此异常:

reply: b'235 2.7.0 Accepted\r\n'
reply: retcode (235); Msg: b'2.7.0 Accepted'
send: 'QUIT\r\n'
reply: b'221 2.0.0 closing connection s66sm8304113yhp.2 - gsmtp\r\n'
reply: retcode (221); Msg: b'2.0.0 closing connection s66sm8304113yhp.2 - gsmtp'
Traceback (most recent call last):
  File "base.py", line 108, in <module>
    send(fromaddr, toaddrs, msg)
  File "base.py", line 61, in send
    server.send_message(fromaddr, toaddrs, msg)
  File "/usr/lib/python3.4/smtplib.py", line 829, in send_message
    resent = msg.get_all('Resent-Date')
AttributeError: 'str' object has no attribute 'get_all'
Run Code Online (Sandbox Code Playgroud)

代码(直接链接到麻烦的线)可用在这里.奇怪的是,代码实际上在实际发送任何电子邮件正文之前发送了QUIT - 不确定这是否会影响这一点.

有谁知道导致此错误的原因是什么?

编辑原来我的部分问题是我使用的格式不正确.send_message()需要变量的顺序 …

python email smtplib attributeerror

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

Flask-SocketIO服务器使用轮询而不是WebSockets

我正在Flask-SocketIO服务器上工作正常。

但是,我的服务器日志中收到很多这样的请求:

"GET /socket.io/?EIO=3&transport=polling&t=LBS1TQt HTTP/1.1"

这是我正在使用的代码:

from flask import Flask, render_template, redirect, url_for
from flask_socketio import SocketIO, emit
import json

def load_config():
    # configuration
    return json.load(open('/etc/geekdj/config.json'))

config = load_config()

geekdj = Flask(__name__)

geekdj.config["DEBUG"] = config["debug"]
geekdj.config["SECRET_KEY"] = config["secret_key"]
geekdj.config.from_envvar("FLASKR_SETTINGS", silent=True)

socketio = SocketIO(geekdj)

@geekdj.route('/')
def index():
    return render_template('index.html')

# SocketIO functions

@socketio.on('connect')
def chat_connect():
    print ('connected')

@socketio.on('disconnect')
def chat_disconnect():
    print ("Client disconnected")

@socketio.on('broadcast')
def chat_broadcast(message):
    print ("test")
    emit("chat", {'data': message['data']})

if __name__ == "__main__":
    socketio.run(geekdj, port=8000)
Run Code Online (Sandbox Code Playgroud)

和JS中的index.html

<script …
Run Code Online (Sandbox Code Playgroud)

python websocket socket.io flask-socketio

4
推荐指数
2
解决办法
4303
查看次数