小编Sun*_*ear的帖子

如何删除 pipenv 的 PipFile、PipFile.lock 和关联的 virtualenv?

要创建pipenv一个Python项目,我首先创建一个项目文件夹,进入该文件夹,指示pipenv创建的PipfilePipfile.lock并且像这样相关的虚拟环境:

$ mkdir Project
$ cd Project
$ pipenv --three
Creating a virtualenv for this project…
Using /usr/bin/python3 (3.5.2) to create virtualenv…
?Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in ~/.local/share/virtualenvs/Projects-jrsJaPdI/bin/python3
Also creating executable in ~/.local/share/virtualenvs/Projects-jrsJaPdI/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: ~/.local/share/virtualenvs/Projects-jrsJaPdI
Creating a Pipfile for this project…
$
$ pipenv install --dev
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (711973)!
Installing …
Run Code Online (Sandbox Code Playgroud)

python pipenv

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

如何使用 Python3.6 tarfile 模块从内存中读取?

我想从url内存中下载一个 tarfile,然后将其所有内容提取到文件夹中dst。我该怎么办?

以下是我的尝试,但我无法实现我的计划。

#!/usr/bin/python3.6
# -*- coding: utf-8 -*-

from pathlib import Path
from io import BytesIO
from urllib.request import Request, urlopen
from urllib.error import URLError
from tarfile import TarFile


def get_url_response( url ):
    req = Request( url )
    try:
        response = urlopen( req )
    except URLError as e:
        if hasattr( e, 'reason' ):
            print( 'We failed to reach a server.' )
            print( 'Reason: ', e.reason )
        elif hasattr( e, 'code'):
            print( 'The server couldn\'t fulfill …
Run Code Online (Sandbox Code Playgroud)

python io urllib tarfile

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

在 tkinter.treeview 中选择一个单元格并获取单元格数据

我想使用鼠标指针在 tkinter.treeview() 创建的表格中选择一个单元格并打印出单元格的值。我怎样才能做到这一点?

下面是创建 tkinter.treeview 表的示例代码。在这种情况下,我想使用鼠标指针单击其中一个值,例如“机场”。但是,当我单击该单元格时,会改为选择整行(即小部件项)。我怎样才能避免这种情况,以便我能得到我想要的?

import tkinter as tk
import tkinter.ttk as ttk

class App(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        ttk.Frame.__init__(self, parent, *args, **kwargs)
        self.tree = ttk.Treeview(parent, columns=("size", "modified"))
        self.tree["columns"] = ("date", "time", "loc")

        self.tree.column("date", width=80)
        self.tree.column("time", width=80)
        self.tree.column("loc", width=100)

        self.tree.heading("date", text="Date")
        self.tree.heading("time", text="Time")
        self.tree.heading("loc", text="Loc")
        self.tree.bind('<ButtonRelease-1>', self.selectItem)

        self.tree.insert("","end",text = "Name",values = ("Date","Time","Loc"))
        self.tree.insert("","end",text = "John",values = ("2017-02-05","11:30:23","Airport"))
        self.tree.insert("","end",text = "Betty",values = ("2014-06-25","18:00:00","Orchard Road"))

        self.tree.grid()

    def selectItem(self, event):
        curItem = self.tree.focus()
        print (self.tree.item(curItem))


if __name__ == "__main__":
    window = …
Run Code Online (Sandbox Code Playgroud)

python treeview tkinter

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

从tkinter.Listbox中提取项目列表

我编写了以下tkinter脚本来了解如何将数据列表添加到tkinter.Listbox小部件中.我发现了两种方法.

接下来,我想从tkinter.Listbox小部件中提取相同的列表.在4种不同的方法中,我只设法让第4种方法(即e4)起作用.

如何使e1,e2和e3方法起作用?最终目标是获取最初提供给tkinter.Listbox小部件的相同列表.

测试脚本:

import tkinter as tk # Python 3 tkinter modules
import tkinter.ttk as ttk

class App(ttk.Frame):
    def __init__(self, parent, *args, **kwargs):
        # 1. Initialise Frame
        ttk.Frame.__init__(self, parent)
        self.parent = parent

        # Method1
        name1 = ['Peter', 'Scotty', 'Walter', 'Scott', 'Mary']
        self.lb1_values = tk.StringVar(value=name1)
        self.listbox1 = tk.Listbox(self, listvariable=self.lb1_values)

        # Method2
        self.listbox2 = tk.Listbox(self)
        name2 = ['Sarah', 'Sean', 'Mora', 'Mori', 'Mary']
        for item in name2:
            self.listbox2.insert(tk.END, item)

        self.listbox1.grid(in_=self, row=0, column=0, sticky='nsew')
        self.listbox2.grid(in_=self, row=0, column=1, sticky='nsew')

        # Extract values from listbox …
Run Code Online (Sandbox Code Playgroud)

python listbox tkinter

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

为什么a.dot(b)比a @ b快,尽管Numpy建议a @ b

根据这个问题的答案,也根据numpy,最好通过a @ bnumpy.matmul(a,b)与进行比较,二维阵列的矩阵乘法a.dot(b)

如果a和b均为二维数组,则为矩阵乘法,但最好使用matmul或a @ b。

我做了以下基准测试,发现相反的结果。

问题:我的基准测试有问题吗?如果不是,为什么Numpy不建议a.dot(b)a@b或快numpy.matmul(a,b)

基准使用python 3.5 numpy 1.15.0。

$ pip3 list | grep numpy
numpy                         1.15.0
$ python3 --version
Python 3.5.2
Run Code Online (Sandbox Code Playgroud)

基准代码:

import timeit

setup = '''
import numpy as np
a = np.arange(16).reshape(4,4)
b = np.arange(16).reshape(4,4)
''' 
test = '''
for i in range(1000):
    a @ b
'''
test1 = '''
for i in range(1000):
    np.matmul(a,b)
'''
test2 …
Run Code Online (Sandbox Code Playgroud)

python arrays performance numpy matrix

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

如何在python 3.6中整齐地打印一长串数字?

>>> text = [ str(i) for i in range(1, 100)]
>>> print( " {}".format( ", ".join( str(i) for i in text ) ) )
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, …
Run Code Online (Sandbox Code Playgroud)

python

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

如何使用 pathlib.Path.expanduser() 并修改和使用 PosixPath 值?

下面显示了我如何获取 user1 的主目录,创建一个新的子目录名称并通过 python 3.6 的os模块在那里创建一个新的子目录。

>>> import os.path
>>> import os
>>> a = os.path.expanduser('~')
>>> a
'/home/user1'
>>> a_sub_dir = a + '/Sub_Dir_1'
>>> a_sub_dir
'/home/user1/Sub_Dir_1'
>>> def create_sub_dir( sub_dir ):
    try:
        os.makedirs( sub_dir, mode=0o777, exist_ok=False )
    except FileExistsError:
        print('Sub_directory already exist, no action taken.')
    else:
        print('Created sub_directory.')
>>> create_sub_dir( a_sub_dir )
Created sub_directory.
>>> create_sub_dir( a_sub_dir )
Sub_directory already exist, no action taken.
Run Code Online (Sandbox Code Playgroud)

我想通过 python 3.6 的pathlib模块实现与上面相同的功能。但是,我似乎无法让它工作(见下文)。我的问题:

  1. 我如何使用Path.expanduser()
  2. 我如何修改 a 中的信息, …

python pathlib

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

pathlib.Path.chmod(mode)中mode的说明

我可以知道如何在pathlib.Path.chmod(mode) 中定义模式。我在 python 3.6 文档中没有找到关于如何定义模式的任何解释或解释链接。例如

>>> p = Path( 'filename.ext' )
>>> p.stat().st_mode
33204
Run Code Online (Sandbox Code Playgroud)

这五个数字单独或一起的含义是什么?我想将值更改为,以便所有者具有执行权限。如何计算用于模式的值?

替代解决方案:

我要感谢@falsetru 的回答和评论。此外,我喜欢分享一种非数学方法来查找可以提交给pathlib.Path.chmod(mode)命令的所需权限级别的“模式值” 。

以下是步骤:

  1. 确定您想要的文件权限级别。
  2. 使用文件管理器(例如 nautilus)选择文件,然后右键单击它,单击“属性”,然后左键单击“权限”选项卡。您可以在此处为文件设置所需的权限级别。
  3. 接下来,从 Python 解释器提交上述命令。它将返回您想要的权限级别的相应模式值。然后你可以在pathlib.Path.chmod(mode)命令中使用它。

python unix linux pathlib ubuntu-18.04

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

python检查有效的电子邮件

Python Central 于2016年12月29日发布了这个简单的脚本,以检查格式正确的电子邮件.

import re

def isValidEmail(email):
    if len(email) > 7:
        if re.match("^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$", email) != None:
            return True
        return False

if isValidEmail("my.email@gmail.com") == True:
    print("This is a valid email address")
else:
    print("This is not a valid email address")
Run Code Online (Sandbox Code Playgroud)

尝试时,python 3返回以下错误消息:

Traceback (most recent call last):
  File "~/isValidEmail.py", line 11, in <module>
    if isValidEmail("my.email@gmail.com") == True:
  File "~/isValidEmail.py", line 7, in isValidEmail
    if re.match("^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$", email) != None:
  File "/usr/lib/python3.5/re.py", line 163, in match
    return _compile(pattern, flags).match(string)
  File "/usr/lib/python3.5/re.py", line …
Run Code Online (Sandbox Code Playgroud)

python email

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

如何使用python的str.format在logging.basicConfig()中定义格式?

Python 文档教授以下语法:

import logging
logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
logging.warning('is when this event was logged.')
Run Code Online (Sandbox Code Playgroud)

我想format='%(asctime)s %(message)s'使用 python str.format 来表达。我该怎么做?

我尝试过,但返回了NameError,这表明我不明白asctimemessage是如何定义的。谢谢。

  File "~/test.py", line 163, in main
    format='{}{}'.format(asctime,message),
NameError: name 'asctime' is not defined
Run Code Online (Sandbox Code Playgroud)

python logging

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