共 16 篇文章

标签:python

简易教程:如何在 Linux 上安装 SWIG (linux swig安装)

Title: A Simple Guide to Installing SWIG on Linux SWIG, or the Simplified Wrapper and Interface Generator, is a powerful tool for interfacing between programming languages. It can be especially useful for developers who work with multiple programming languages and need to create interfaces to facilitate communication between them. In this guide, we will walk through the steps for installing SWIG on Linux. Step 1: Check Your System Before we begin, it’s important to make sure that your system meets the minimum requirements for installing SWIG. Specifically, you will need: – A Linux distribution (such as Ubuntu or CentOS) that includes a package management system – Basic knowledge of the command line interface (CLI) in Linux – Root access (or...

技术分享

轻松愉悦的远程控制:使用Linux图形化界面(linux远程图形化界面)

Remote control is one of the most important tools used by a computer user today. It allows users to quickly and easily control various aspects of their computing experience from one easy location. But what if you don’t have access to a graphical user interface (GUI)? This is where the use of Linux graphical user interface (GUI) comes in. Using a graphical user interface with Linux is one of the simplest ways to quickly and easily access the many powerful features available with the Linux operating system. Commands can be entered quickly and accurately with a graphical interface, allowing users to effectively manage and control their systems. The best part about using a GUI with Linux is that it’s incredibly...

技术分享

如何构建优秀的命令行用户界面的Python库

在这个分为两篇的关于具有绝佳命令行界面的终端程序的系列文章的第二篇教程中,我们将讨论 Prompt、Toolkit、Click、Pygments 和 Fuzzy Finder 。 这是我的一个分为两篇的关于具有绝佳命令行界面的终端程序的系列文章的第二篇教程。在第一篇文章中,我们讨论了一些能够使命令行应用用起来令人感到愉悦的特性。在第二篇文章中,我们来看看如何用 Python 的一些库来实现这些特性。 我打算用少于 20 行 Python 代码来实现。让我们开始吧。 Python Prompt Toolkit 我习惯于把这个库称为命令行应用的瑞士军刀,它可以作为readline、curses等的替代品。让我们首先安装这个库,然后开始该教程: pip install prompt_toolkit 我们以一个简单的 REPL (LCTT 译注:REPL —— Read-Eval-Print Loop,交互式开发环境)开始。一个典型的 REPL 会接收用户的输入,进行一个操作,然后输出结果。比如在我们的例子中,我们将要实现一个具有 “回显” 功能的 REPL 。它仅仅是原样打印出用户的输入: REPL from prompt_toolkit import prompt while 1: user_input = prompt('>') print(user_input) 这就是实现 REPL 的全部代码。它可以读取用户的输入,然后打印出用户的输入内容。在这段代码中使用的prompt函数来自 prompt_toolkit库,它是readline库的一个替代品。 命令历史 为了增强我们的 REPL 的功能,我们可以添加命令历史: from prompt_toolkit import prompt from prompt_toolkit.history import FileHistory while 1: user_input = prompt('>', history=FileHistory('history.txt'), ) print(user_input) 我们刚刚给 REPL 添加了持久的命令历史。现在,我们可以使用上/下箭头来浏览命令历史,并使用Ctrl-R来搜索命令历史。它满足了命令行的基本准则。 自动推荐 在第一篇教程中,我讲到的一个可发现性技巧是自动推荐历史命令。(我是首先在 fish shell 中看到的这一特性)让我们把这一特性加入到我们的 REPL 中: from prompt_toolkit import prompt from prompt_toolkit.history import FileHistory from prompt_toolkit.auto_suggest import AutoSuggestFromHistory while 1: user_input = prompt('>', history=FileHistory('history.txt'), auto_suggest=AutoSuggestFromHistory(), ) print(user_input) 我们只需要给prompt() API 调用添加一个新的参数。现在,我们有了一个具有fish shell风格的 REPL,它可以自动推荐历史命令。 自动补全 现在,让我们通过自动补全来加强 Tab 补全。它能够在用户开始输入的时候弹出可能的命令推荐。 REPL 如何来进行推荐呢?我们使用一个字典来进行可能项的推荐。 比如说我们实现一个针对 SQL 的 REPL 。我们可以把 SQL 关键字存到自动补全字典里面。让我们看一看这是如何实现的: from prompt_toolkit import prompt from...

技术分享
8行代码实现快速排序,简单易懂图解!-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

8行代码实现快速排序,简单易懂图解!

一、基线条件和递归条件 由于递归函数是自己调用自己,因此编写这样的函数时容易出错,从而导致无限循环。示例如下: def countdown(i): print(i) countdown(i-1) 如果运行上述代码,就会发现一个问题:这个函数运行起来是不会停止,直到到达递归的最大深度。 正是因为这样,编写递归函数的时候,必须告诉它何时停止递归,所以每个递归函数都有两个部分:基线条件(base case)和递归条件(recursive case)。递归条件指定的是函数调用自己,而基线条件则指的是不再调用自己,从而避免循环。例如给 countdown 添加基线条件。 def countdown(i): print(i) if i <= 1: #<----------基线条件 return else: #<--------------递归条件 countdown(i-1) 这样就按照预期那样执行,不会无限循环下去如图所示 二、快速排序 因为对于排序来说,最简单的就是一个空列表,或者只包含一个元素的列表,所以可以将基线条件设置为空或只包含一个元素,在这种情况下,只需要返回原列表。 def quicksort(alist): if len(alist) < 2: return alist 思路如下图所示: 代码如下: def quicksort(alist): if len(alist) < 2: return alist # 基线条件为空或只包含一个元素的列表是有序的。 else: pivot = alist[0] # 选择基准值 less = [i for i in alist[1:] if i <= pivot] # 由小于基准值的元素组成 biggish = [i for i in alist[1:] if i > pivot] # 由大于基准值的元素组成 return quicksort(less) + [pivot] + quicksort(

技术分享
Python中可以用三种方法判断文件是否存在-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Python中可以用三种方法判断文件是否存在

通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。 1.使用os模块 os模块中的os.path.exists()方法用于检验文件是否存在。 判断文件是否存在 import os os.path.exists(test_file.txt) #True os.path.exists(no_exist_file.txt) #False 判断文件夹是否存在 import os os.path.exists(test_dir) #True os.path.exists(no_exist_dir) #False 可以看出用os.path.exists()方法,判断文件和文件夹是一样。 其实这种方法还是有个问题,假设你想检查文件“test_data”是否存在,但是当前路径下有个叫“test_data”的文件夹,这样就可能出现误判。为了避免这样的情况,可以这样: 只检查文件 import os os.path.isfile("test-data") 通过这个方法,如果文件”test-data”不存在将返回False,反之返回True。 即是文件存在,你可能还需要判断文件是否可进行读写操作。 判断文件是否可做读写操作 使用os.access()方法判断文件是否可进行读写操作。 语法: os.access(path, mode) path为文件路径,mode为操作模式,有这么几种: os.F_OK: 检查文件是否存在; os.R_OK: 检查文件是否可读; os.W_OK: 检查文件是否可以写入; os.X_OK: 检查文件是否可以执行 该方法通过判断文件路径是否存在和各种访问模式的权限返回True或者False。 import os if os.access("/file/path/foo.txt", os.F_OK): print ("Given file path is exist.") if os.access("/file/path/foo.txt", os.R_OK): print ("File is accessible to read") if os.access("/file/path/foo.txt", os.W_OK): print ("File is accessible to write") if os.access("/file/path/foo.txt", os.X_OK): print ("File is accessible to execute") 2.使用Try语句 可以在程序中直接使用open()方法来检查文件是否存在和可读写。 语法: open() 如果你open的文件不存在,程序会抛出错误,使用try语句来捕获这个错误。 程序无法访问文件,可能有很多原因: 如果你open的文件不存在,将抛出一个FileNotFoundError的异常; 文件存在,但是没有权限访问,会抛出一个PersmissionError的异常。 所以可以使用下面的代码来判断文件是否存在: try: f =open() f.close() except FileNotFoundError: print ("File is not found.") except PermissionError: print ("You don't have permission to access this file.") 其实没有必要去这么细致的处理每个异常,上面的这两个异常都是IOError的子类。所以可以将程序简化一下: ''' 学习中遇到问题没人解答?小编创建了一个Python学习交流群:153708845 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' try: f =open() f.close() except...

技术分享
tunm二进制协议在python上的实现-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

tunm二进制协议在python上的实现

tunm是一种对标JSON的二进制协议, 支持JSON的所有类型的动态组合 支持的数据类型 基本支持的类型 “u8”, “i8”, “u16”, “i16”, “u32”, “i32”, “u64”, “i64”, “varint”, “float”, “string”, “raw”, “array”, “map” 为什么我们需要二进制协议 下图是文本格式JSON与tunm的对比 类型 可读 可编辑 编码速度 解码速度 数据大小 预定义 JSON ✓ ✓ 慢 慢 大 否 tunm x x 快 快 小 否 protobuf x x 快 快 小 是 在高性能的场景下, 或者需要流量传输比较敏感的地方, 通常会选择二进制来代替文本协议来做为通讯的, 如RPC, REST, 游戏等情况。 相对于google protobuf, 它需要比较完善的预定义过程, 就比如客户端版本1, 服务端版本2, 就有比较大的可能造成不兼容, 对需求经常变化的就会比较难与同步。 tunm相对于JSON, 若第一版是 { "name": "tunm", "version": 1 } 此时第二版需要加入用户的id, 就可以很方便的变成 { "name": "tunm", "version": 2, "id": 1 } 而对客户端1来说, 只是多一个id的字段, 不会有任何的破坏, 做到版本升级而无影响 协议的二进制格式 数据协议分为三部分(协议名称, 字符串索引区, 数据区(默认为数组)) 如数据协议名为cmd_test_op, 数据为[“tunm_proto”, {“name”: “tunm_proto”, “tunm_proto”: 1}] 那么数据将先压缩协议名cmd_test_op, 将先写下可变长度(varint)值为11占用1字节, 然后再写入cmd_test_op的utf8的字节数 接下来准备写入字符串索引区, 索引数据用到的字符串为[“tunm_proto”, “name”]两个字符串, 即将写入可变长度(varint)值为2占用一字节, 然后分别写入字符串tunm_proto和name两个字符串, 这样子字符串相接近有利于压缩, 且如果有相同的字符串可以更好的进行复用 接下来准备写入数据区, 首先判断为一个数组, 写入类型u8(TYPE_ARR=16), 写入数组长度varint(2), 准备开始写第一个数据, 字符串tunm_proto, 已转成id, 则写入类型u8(TYPE_STR_IDX=14), 查索引号0, 则写入varint(0), 第一个字段写入完毕, 接下来第二个字段是一个map数据, 写入map长度varint(2), 然后进行遍历得到key值为name, 则写入写入类型u8(TYPE_STR_IDX=14),查索引号1, 则写入varint(1), 然后开始写name对应的值tunm_proto,...

技术分享

Python代码块及输入输出

Python代码块 前面分别介绍了关键字、运算符,由运算符和操作数组成了表达式。而语句由关键字、标识符、表达式组成。而代码块由若干条语句组成。 通常Python中的代码块是通过缩进来创建的。在很多语言中,都使用一个特殊的单词或字符,比如begin或{来标识代码块的起始位置,并使用另一个特殊的单词或字符,如end或}来标识结束位置。在Python中,使用冒号:指出接下来是一个代码块,并将该代码块中的每行代码都缩进相同的程度。发现缩进量与之前相同时,你就知道当前代码块到此结束了。 使用缩进来表示新的代码块是Python语言的特色之一。 3.7.2 输入和输出 Python使用print和input作为输入输出。print和input都是Python中的函数。关于函数,我们将在后续的函数章节进行详细地介绍。这里仅介绍下这2个常用函数的常见用法。 3.7.2.1 输出print print函数用来将指定的内容输出到控制台。 print(‘hello, world’) # 输出1个内容 print(‘你好,’, ‘我是张三’) # 输出2个内容 a = 5 print(a) # 输出变量的值 hello, world 你好, 我是张三 5 3.7.2.2 输入input input函数用来从控制台接收用户的输入。 >>> input(‘请输入你的名字:’) # 请求用户输入姓名 请输入你的名字: 此时我们就可以在控制台中输入一个名字,然后就会被input函数获取到,但是由于没有变量进行接收,实际上是没有什么效果的。我们可以用一个变量来进行接收,如下: >>> age = input(‘请输入您的年龄:’) # 请求用户输入年龄,并赋值给age变量 请输入您的年龄:50 输入50并按回车后,input函数就会获取到刚才用户的输入内容,并赋值给age。接下来我们就可以用age来进行运算了。

技术分享

Python 常用的代码段

前言 Python是一种通用的高级编程语言。用它可以做许多事,比如开发桌面 GUI 应用程序、网站和 Web 应用程序等。 作为一种高级编程语言,Python 还可以让你通过处理常见的编程任务来专注应用程序的核心功能。并且,编程语言的简单语法规 则进一步简化了代码库的可读性和应用程序的可维护性。 与其他编程语言相比,Python 的优势在于: 1.与主要平台和操作系统兼容; 2.有许多开源框架和工具; 3.代码具备可读性和可维护性; 4.健壮的标准库; 5.标准测试驱动开发 1.在两个变量之间交换值 在其他语言中,要在两个变量间交换值而不是用第三个变量,我们要么使用算术运算符,要么使用位异或(Bitwise XOR)。在 Python 中,它就简单多了,如下所示。 a = 5 b = 10 a,b = b, aprint(a) # 10 print(b) # 5   2.检查给定的数字是否为偶数 如果给定的数字为偶数,则如下函数返回 Ture,否则返回 False。 python学习交流Q群:906715085### def is_even(num): return num % 2 == 0 is_even(10) # True   3.将多行字符串拆分为行列表 以下函数可用于将多行字符串拆分为行列表。 def split_lines(s): return s.split('\n') split_lines('50\n python\n snippets') # ['50', ' python', ' snippets']   4.查找对象使用的内存 标准库的 sys 模块提供了 getsizeof() 函数。该函数接受一个对象,调用对象的 sizeof() 方法,并返回结果,这样做能使对象可检查。 import sys print(sys.getsizeof(5)) # 28 print(sys.getsizeof("Python")) # 55   5.反转字符串 Python 字符串库不像其他 Python 容器(如 list) 那样支持内置的 reverse()。反转字符串有很多方法,其中最简单的方法是使用切片运算符(slicing operator)。 language = "python" reversed_language = language[::-1] print(reversed_language) # nohtyp 6.打印字符串 n 次 在不使用循环的情况下,要打印一个字符串 n 次是非常容易的,如下所示。 def repeat(string, n): return (string * n) repeat('python', 3)...

技术分享
Windows 安装 pycrypto 常见问题解决-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Windows 安装 pycrypto 常见问题解决

首先pycrypto 项目已经不在更新了,自己开发可以使用cryptography、pycryptodome https://pypi.org/project/cryptography/ https://pypi.org/project/pycryptodome/ 关于python使用Crypto.Cipher模块,安装pycrypto ,ImportError: No module named ‘Crypto’  常见问题及解决方案如下: 1.需要安装:Microsoft Visual C++ 14.0 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools 安装VC 只要版本大于等于Microsoft Visual C++ 14.0  就可以,对应的VS版本高于2015就可以 也可以安装vs 桌面版本,会自动安装VC,相对会比较大,下载Community版本即可,安装时”使用c++的桌面开发” 2. 安装VC 以后,inttypes.h 报错 报错信息: 1 2 3 4 5 ucrt\inttypes.h(26): error C2061: syntax error: identifier ‘intmax_t‘ error C2061: 语法错误: 标识符“intmax_t”; error C2059: 语法错误:“;” ; error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面)   以下两种方案都可以使用 解决办法1:手动修改默认vs文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (1) 复制 stdint.h到系统目录下 # 默认路径如下,注意自己安装vs的实际路径 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\include\stdint.h 到 C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\ucrt\下 (2) 修改inttypes.h文件, C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\ucrt\inttypes.h 将第13行 #include <stdint.h> 修改为 #include "stdint.h" (3) 重新安装 pycrypto   解决方法2:设置vs环境变量 1 2 3 4 5 6 7...

技术分享
Python中的交互库-os库-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Python中的交互库-os库

一.介绍 os库是与操作系统相关的库,它提供了通用的基本的操作系统交互功能。os库是Python的标准库之一,它里面包含几百个处理函数,能够处理与操作系统相关的功能,包括路径操作、进程管理、环境参数设置等几类功能。其中路径操作是利用os.path子库,它用于处理文件以及目录的路径,并获得相关的信息;进程管理指启动系统中的其它程序的功能;环境参数指获得系统软硬件信息等环境参数。 当然os库还包含很多其它功能,这里只介绍这三种。 二.使用说明 1.os库的路径操作 os库使用os.path子库来进行路径操作,这个子库以path为入口,用于操作和处理文件的路径,这里的path(入口)指的是目录或包含文件名称的文件的路径。具体使用保留字import,调用import os.path或者import os.path as <别名>。 常用函数如下: os.path.abspath(path) 返回path在当前文件系统中的绝对路径(path也许是不存在的),例如: >>> import os >>> os.path.abspath("/") 'C:\\' >>> os.path.abspath("a.txt") 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\a.txt' >>> os.path.abspath("C:/Users/Administrator/Desktop/text.py") 'C:\\Users\\Administrator\\Desktop\\text.py' os.path.normpath(path) 将path归一化的表示,统一使用\分隔路径,只是修改提供的path不会返回绝对路径, 也认为是可以将字符串path中的/和//改为\,例如: >>> import os >>> os.path.normpath("/") '\\' >>> os.path.normpath("a.txt") 'a.txt' >>> os.path.normpath("C://") 'C:\\' os.path.relpath(path) 返回当前程序与文件之间的相对路径(文件也许不存在),例如: >>> import os >>> os.path.relpath("C:/a.txt") '..\\..\\..\\..\\a.txt' os.path.dirname(path) 返回path中的目录名称(path也许不存在),例如: >>> import os >>> os.path.dirname("C:/a.txt") 'C:/' >>> os.path.dirname("a.txt") '' os.path.basename(path) 返回文件的文件名(path也许不存在),例如: >>> import os >>> os.path.basename("C:/a.txt") 'a.txt' os.path.join(path,*paths) 组合path和paths,返回一个路径字符串,例如: >>> import os >>> os.path.join("C:/","Python/a.txt") 'C:/Python/a.txt' >>> os.path.join("c:/","Python/a.txt","Python/b.txt") 'c:/Python/a.txt\\Python/b.txt' >>> os.path.join("c:/","python","a.txt") 'c:/python\\a.txt' >>> os.path.join("c:/","python/","a.txt") 'c:/python/a.txt' os.path.exists(path) 判断path对应文件或目录是否存在,返回True或Fasle,例如: >>> import os >>> os.path.exists("C:/python/a.txt") False os.path.isfile(path) 判断path所对应的是否是存在的文件,返回True或False,例如: >>> import os >>> os.path.isfile("C:/python/a.txt") False >>> os.path.isfile("C:/Users") False os.path.isdir(path) 判断path所对应的的是否是存在的目录,返回True或False,例如: >>> import os >>> os.path.isdir("C:/Users/a.txt") False >>> os.path.isdir("C:/python") False >>> os.path.isdir("C:/Users")...

技术分享