Visual Studio Code最近发布了,我喜欢它的外观和它提供的功能,所以我想我会试一试.
我从下载页面下载了应用程序,将 其解决了一些功能......然后意识到我不知道如何实际执行我的任何Python代码!
我非常喜欢Visual Studio Code的外观和可用性/功能,但我似乎无法找到如何运行我的Python代码,这是一个真正的杀手,因为这是我编程的主要内容.
有谁知道是否有办法在Visual Studio代码中执行Python代码?
我需要在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列表中缺少的,希望通过命令,但我知道如何循环比较.
我正在使用一个使用剪刀字符(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|")
这是否表示终端无法显示该字符?我知道这是一个旧系统,但它是我目前唯一使用的系统.操作系统的时代是否会干扰该计划?
我读过这些问题:
UnicodeEncodeError:'ascii'编解码器无法对位置0中的字符u'\ xef'进行编码:序数不在范围内(128) - 不同的字符
"UnicodeEncodeError:'ascii'编解码器不能编码字符" - 使用2.6,所以不知道它是否适用
UnicodeEncodeError:'ascii'编解码器无法编码字符?- 似乎是我的问题的合理解决方案.encode('UTF-8'),我没有得到错误.但是,它显示的是字符代码,而不是我想要的字符,.decode()只是给了我同样的错误.不确定我是否正确行事.
UnicodeEncodeError:'ascii'编解码器无法编码位置0-6中的字符:序数不在范围内(128) - 不确定是否适用,他使用GUI,获取输入,全部使用希腊语.
是什么导致了这个错误?它是系统/操作系统的时代,Python的版本,还是一些编程错误?
编辑 …
我在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 …
我正在开发一个项目,该项目在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 …
我正在我的项目中使用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) 我在一个网站上工作,用户通过 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) 我有一个程序设置,以便它自己显示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 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()需要变量的顺序 …
我正在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)