要创建pipenv一个Python项目,我首先创建一个项目文件夹,进入该文件夹,指示pipenv创建的Pipfile,Pipfile.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) 我想从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) 我想使用鼠标指针在 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) 我编写了以下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) 根据这个问题的答案,也根据numpy,最好通过a @ b或numpy.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) >>> 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) 下面显示了我如何获取 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模块实现与上面相同的功能。但是,我似乎无法让它工作(见下文)。我的问题:
Path.expanduser()? 我可以知道如何在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)命令的所需权限级别的“模式值” 。
以下是步骤:
pathlib.Path.chmod(mode)命令中使用它。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 文档教授以下语法:
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,这表明我不明白asctime和message是如何定义的。谢谢。
File "~/test.py", line 163, in main
format='{}{}'.format(asctime,message),
NameError: name 'asctime' is not defined
Run Code Online (Sandbox Code Playgroud)