• [技术干货] rosdep update一定能通过de简单方法[转载]
    rosdep update命令使用该方法是可以跳过sudo rosdep init初始化命令设置的,前提是安装完ros,rosdep update是安装一些依赖库,比如在Cartographer、ORB-SLAM等算法需要使用到一些依赖库,是必须安装的,如果不是有需要的,只是使用ros一般依赖,是不需要rosdep update的重点重复说明:(因为大家错的较多)记录rosdistro存放地址,例如/home/LiFeiHong/rosdistro,自己的改成/home/你用户名/rosdistro,下面都是按照这样改,你最后报错如果出现LiFeiHong,说明你路径错了;另外本方案在18.04和16.04测试都没问题,20.04Ubuntu版本可能需要对路径的python2.7改成python3.0。1.首先将下面仓库的内容clone到本地方法一:csdn资源直接下载rosdistro方法二:git clone https://github.com/ros/rosdistro.git方法三:如果git clone 速度较慢,可以直接拷贝https://github.com/ros/rosdistro.git到网页下载,速度提高,不过需要记得将下载包名字rosdistro-master改称rosdistro记录rosdistro存放地址,例如/home/LiFeiHong/rosdistro如果是自己的改成/home/user/rosdistro,其中user表示用户名,下面都是按照这样改2.修改/usr/lib/python2.7/dist-packages/rosdep2/rep3.py文件cd /usr/lib/python2.7/dist-packages/rosdep2 sudo gedit rep3.py注意:如果进去不到rosdep2文件夹,直接在usr文件夹下搜索rep3.py。就能查找到对应的路径,以下方法同样。将REP3_TARGETS_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml’ 替换成 REP3_TARGETS_URL = 'file:///home/LiFeiHong/rosdistro/releases/targets.yaml'替换后的/home/LiFeiHong 即为第一步clone内容的存放地址3.修改/usr/lib/python2.7/dist-packages/rosdistro/__init__.py文件cd /usr/lib/python2.7/dist-packages/rosdistrosudo gedit __init__.py将原来文件中的 DEFAULT_INDEX_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml’ 替换成 DEFAULT_INDEX_URL = 'file:///home/LiFeiHong/rosdistro/index-v4.yaml'替换后的/home/LiFeiHong 即为第一步clone内容的存放地址4.配置20-default.list文件如果者查看/etc/ros/rosdep/sources.list.d路径已经有20-default.list文件(之前已经运行过sudo rosdep init的原因),就直接跳过4.1步奏,运行4.2步奏,---------------------======4.1、创建文件夹sources.list.d,并生成20-default.list 文件 sudo mkdir -p /etc/ros/rosdep/sources.list.d  生成20-default.listcd /etc/ros/rosdep/sources.list.d  sudo touch 20-default.list 到这里已经生成/etc/ros/rosdep/sources.list.d/20-default.list文件-------------------======4.2、打开20-default.list文件,将里面内容修改为下面的代码,注意内容/home/LiFeiHong修改为自己的记录路径sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list1内容改成:# os-specific listings firstyaml file:///home/LiFeiHong/rosdistro/rosdep/osx-homebrew.yaml osx# genericyaml file:///home/LiFeiHong/rosdistro/rosdep/base.yamlyaml file:///home/LiFeiHong/rosdistro/rosdep/python.yamlyaml file:///home/LiFeiHong/rosdistro/rosdep/ruby.yamlgbpdistro file:///home/LiFeiHong/rosdistro/releases/fuerte.yaml fuerte# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead注意的是yaml file://表示固定格式/home...表示文件目录,所以是yaml file:///5.最后直接rosdep update1赠送cartographer简单安装教程链接:https://blog.csdn.net/weixin_44023934/article/details/95006421原文链接:https://blog.csdn.net/weixin_44023934/article/details/121242176
  • [技术干货] Python:Bug 官网不要了,全迁去 GitHub【转载】
    近几年,GitHub 开发者数量逐年上升,仅过去一年 GitHub 的新增用户便有 1600 万人,总用户数更是达到了 7300 万——在开源浪潮席卷全球中,GitHub 无疑成为了许多开发者迈入开源的一个重要途径。Python 开发团队或许正是看中了这一点,才决定将 Python 开发基础设施逐步迁移至 GitHub。目前这项迁移工作已进行近 7 年,但最近卡在了“将 Python 的 Bug 迁移至 GitHub”这一步。一、技术&法律,两面受阻相信大多 Python 程序员应该有所了解:此前,如需进行 Bug 提交、跟踪、修复等操作,一般可前往 Python 官方 Bug 网站(https://bugs.python.org/,可简称为 BPO),而 BPO 所用的 Bug 跟踪器为开源工具 Roundup,即由 Roundup 存储 Bug 相关数据。为了顺利将 Python 的 Bug 迁移至 GitHub,上周 Python 核心开发者 Łukasz Langa 在 Python Discourse 论坛上宣布:Roundup 中的 Bug 数据将全部迁移至 GitHub 的 Python 存储库中,此后用户和核心开发者发现的新 Bug 统一在 GitHub Issue 中处理;同时为避免 BPO 中 URL 失效引发混乱,此后 BPO 将以只读模式继续存在,而当前 BPO 中存在的每个 Bug 都将链接其 Github 地址。“我们希望这将降低新贡献者的门槛,并提供更流畅的用户体验。”Łukasz Langa 解释道。理想很丰满,但现实却很难如意。Łukasz Langa 感慨:“不论在技术还是法律层面上,这都不是一件容易的事。”为此,他自一月份起,就一直与同为 Python 开发者的 Ezio Melotti 共同讨论如何推动本次迁移任务。二、复杂的迁移过程Łukasz Langa 将整个 Bug 迁移工作分为测试反馈阶段及正式迁移阶段:(1)以下为测试反馈阶段时间表:2022 年 2 月 18 日开始为期两周的公众反馈收集期。在此期间,开发者可前往 https://github.com/psf/gh-migration/issues/ 查看 Bug 迁移、测试执行等详细步骤并报告具体问题,还可前往 https://github.com/psf/gh-migration/issues 查看一些迁移 Bug 的示例。2022 年 3 月 4 日,在 Github 的帮助下,使用 10% 的 Bug 执行最终的端到端测试迁移,以此估算迁移所需时间及过程中可能会出现的问题。(2)如果反馈收集过程中没有发现任何问题,最终测试也成功实现,就开启正式迁移阶段:2022 年 3 月 10 日开始迁移。BPO 在欧洲中部时间晚上 9 点(太平洋标准时间下午 12 点)进入只读模式,BPO 中的数据将被导入 Github 上的临时存储库中(此过程预计需要 22 个小时)。2022 年 3 月 11 日,Github 开始将临时存储库中的 Bug 全部转移至 Python 库中。据 Łukasz Langa 预计,正式迁移大概需要花费 3-7 天的时间(具体取决于 Github 的负载),而 Bug 迁移期间,Python 程序员需要注意以下几点:不可在 Github 或 BPO 上创建新 Bug;可以在 Github 上创建新 PR 并与现有 PR 交互,这点不会被影响;可以与 Github 上已迁移的 Bug 进行交互,但尽量不要有破坏性操作(如修改 Bug 标题、编辑评论内容、删除评论、删除标签等),因为数据更改会使迁移团队无法确定迁移是否完全成功。Bug 数据迁移完成后,Python 官方会进行相关通知;但如果迁移无法在 7 天内完成,这项工作将中止并重新启用 BPO。除了以上技术方面的问题,本次迁移任务还牵扯到了部分法律纠纷,主要集中在“Python 软件基金会(PSF)是否可以在不征求用户同意下,将用户生成的内容及其潜在的个人身份信息(PII)从 BPO 移动到 GitHub”。关于这个问题,指导委员会和 PSF 律师确定,此次迁移不需要用户同意:“BPO 和 Github 都是面向公众的系统,用户主动将他们的信息(包括 PII)放在 BPO 系统中,BPO 将根据主动同意存储、公开访问等权限,按需分发这些信息。而我们将后端更改为 Github 并不会修改这些权限,迁移过程中也不会显示之前在 BPO 系统中不允许公开访问的任何新用户信息。”三、放弃 BPO 的理由在看过以上迁移流程后,或许会有人疑惑:既然迁移这样麻烦,继续用 BPO 不“香”吗?针对这类问题,Python 官方早在 2018 年创建的 PEP 581 提案中就明确回应了。该提案中,罗列出了一串 Roundup/BPO 中已知存在的问题:包括核心开发者在内,维护人员不到 5 人;没有可用的 CI(持续集成),现有维护人员的负担太大(需要审查、测试和应用补丁);隔绝了来自外界开发者的大量贡献;UI 需重新设计;易暴露用户的电子邮箱,还经常发垃圾邮件给用户;注册新账户过程繁琐…但这一切问题,可能在部分已习惯 BPO 的开发者眼中,“罪”还不至于被放弃的地步,甚至希望 BPO 维护人员可以就这些问题加以改进。不过,Python 官方坚持认为:“GitHub 中有很多我们喜欢的功能,并且我们相信,创建和维护 GitHub 集成及相关工作量,要远低于加速并维护 Roundup 所需的工作量。”最后,正如上文所提到的迁移流程,按计划自 3 月 10 日起 Bug 迁移将正式开始,届时相关开发者需注意迁移期间可能会带来的影响。原文链接:https://blog.csdn.net/m0_50065287/article/details/123126314
  • [业务动态] 关于沙箱实验《使用ModelArts中开发工具学习Python(高级)》下线优化的通知
    沙箱实验《使用ModelArts中开发工具学习Python(高级)》将于2022年3月3日下线进行优化刷新,实验下线后将无法开始实验,下线前的实验操作记录可在【开发者个人中心】的【我的实验】页面中进行查看,请知悉。感谢您的关注,欢迎到沙箱实验室,体验更多精彩实验!发布日期:2022年3月3日
  • [业务动态] 关于沙箱实验《使用ModelArts中开发工具学习Python(初级)》下线优化的通知
    关于沙箱实验《使用ModelArts中开发工具学习Python(初级)》下线优化的通知沙箱实验《使用ModelArts中开发工具学习Python(初级)》即将于2022年3月3日下线进行优化刷新,实验下线后将无法开始实验,下线前的实验操作记录可在【开发者个人中心】的【我的实验】页面中进行查看,请知悉。感谢您的关注,欢迎到沙箱实验室,体验更多精彩实验!发布日期:2022年3月3日
  • [技术干货] kb-python移植指南(CentOS 8.2)
    1.1 介绍kb-python是一个包裹了kallisto和bustools的python包,用于处理单细胞RNA-seq工作流程。关于kb-python的更多信息请访问kb-python官网。语言:Python。一句话描述:用于处理单细胞RNA-seq工作流程。开源协议:GPLv3。建议的版本建议使用的版本为“kb-python 0.26.4”。1.2 环境要求硬件要求硬件要求如表1-1所示。表1-1 硬件要求项目说明CPU鲲鹏920处理器。GPUNVIDIA Tesla A100。 软件要求软件要求如表1-2所示。表1-2 软件要求项目版本下载地址kb-python0.26.4https://github.com/pachterlab/kb_pythonkallisto0.46.2https://github.com/pachterlab/kallistobustools0.41.0https://github.com/BUStools/bustoolsCMake3.20.2通过yum安装,无需手动下载。GCC8.5.0Git/Python3.8https://www.python.orgAnaconda32021.05https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.05-Linux-aarch64.sh 操作系统要求操作系统要求如表1-3所示。表1-3 操作系统要求项目版本下载地址CentOS8.2https://vault.centos.org/8.2.2004/isos/aarch64/CentOS-8.2.2004-aarch64-dvd1.isoKernel4.18.0-193https://vault.centos.org/8.2.2004/BaseOS/Source/SPackages/kernel-4.18.0-193.el8.src.rpm 1.3 移植规划数据本章节给出kb_python软件在移植过程中涉及到的相关软件安装规划路径的用途及详细说明。表1-4 移植规划数据序号软件安装规划路径用途说明1-基础环境搭建中的各安装包安装路径。参考《HPC解决方案 基础环境搭建指导书》中“安装规划数据”章节。2/root/anaconda3Anaconda3的安装规划路径。这里的安装规划路径只是一个举例说明,建议部署在共享路径中。现网需要根据实际情况调整,后续章节凡是遇到安装路径的命令,都以现网实际规划的安装路径为准进行替换,不再单独说明。3/usr/local/bin/kallistokallisto的安装规划路径。4/usr/local/bin/bustoolsbustools的安装规划路径。5/home/kb_pythonkb_python的安装规划路径。 1.4 配置编译环境前提条件使用SFTP工具将各安装包上传至服务器对应目录下。配置流程表1-5 配置流程序号配置项说明1基础环境搭建参考《HPC解决方案 基础环境搭建指导书》中“集群场景环境搭建”章节。2安装GCC&CMake&Git参考1.4.1 安装GCC&CMake&Git。3安装Anaconda3参考1.4.2 安装Anaconda3。4安装kallisto参考《kallisto 0.46.2 移植指南(CentOS 8.2)》。5安装Bustools参考《Bustools 0.41.0 移植指南(CentOS 8.2)》。 1.4.1 安装GCC&CMake&Git操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令安装GCC&CMake&Git。yum install gcc-c++yum install cmakeyum install git步骤 3     执行以下命令验证。gcc -vcmake --versiongit --version若显示版本号,则表示安装成功。----结束1.4.2 安装Anaconda3操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令获取Anaconda安装包。wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.05-Linux-aarch64.sh步骤 3     执行以下命令安装Anaconda3。bash Anaconda3-2021.05-Linux-aarch64.sh1.       输入“enter”查看license。2.       输入“q”继续查看。3.       输入“yes”接受license。4.       输入“enter”确认默认安装位置/root/anaconda3。5.       输入“yes”初始化。步骤 4     执行以下命令,加载环境变量。source ~/.bashrc步骤 5     执行以下命令验证Anaconda3是否安装成功。conda activate base显示(base)信息,则表示Anaconda3安装成功:----结束1.5 获取源码操作步骤步骤 1     下载kb_python安装包。cd /homegit clone https://github.com/pachterlab/kb_python.git----结束1.6 编译安装操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令创建并启用kb_python的conda环境。conda activate baseconda create -n kbconda activate kbconda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels conda-forgeconda config --set show_channel_urls yesconda update -n base -c defaults conda说明:“conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/”为可选。若通过conda安装软件时,网速较慢,可执行该命令添加国内conda源。步骤 3     执行以下命令安装Python环境。conda install python=3.8pip install Cython --trusted-host mirrors.tools.huawei.com -i http://mirrors.tools.huawei.com/pypi/simple步骤 4     执行以下命令安装PYSAM。cd /homegit clone https://github.com/pysam-developers/pysam.gitcd pysamyum install zlib-develyum install bzip2-develpython setup.py install步骤 5     执行以下命令安装tables。conda install h5py python-bloscpip install tables步骤 6     执行以下命令安装kb-python。cd /home/kb_pythonpip install -r requirements.txtpip install -r dev-requirements.txtpython setup.py install步骤 7     执行以下命令验证kb-python。kb info显示如下信息,则表示kb-python安装成功:l   若返回“OSError: [Errno 8] Exec format error: '/root/anaconda3/envs/kb/lib/python3.8/site-packages/kb_python-0.26.4   -py3.8.egg/kb_python/bins/linux/kallisto/kallisto'”报错,则执行以下命令:ln -sf /usr/local/bin/bustools /root/anaconda3/envs/kb/lib/python3.8/site-packages/kb_python-0.26.4-py3.8.egg/kb_python/bins/linux/bustools/bustoolsl   若返回“OSError: [Errno 8] Exec format error: '/root/anaconda3/envs/kb/lib/python3.8/site-packages/kb_python-0.26.4-py3.8.egg/kb_python/bins/linux/bustools/bustools'”报错,则执行以下命令:ln -sf /usr/local/bin/kallisto /root/anaconda3/envs/kb/lib/python3.8/site-packages/kb_python-0.26.4-py3.8.egg/kb_python/bins/linux/kallisto/kallsto----结束1.7 更多资源Kallisto官网:https://www.kallistobus.tools/
  • [技术干货] MetaPhlAn移植指南 (CentOS 8.2)
    1.1 介绍MetaPhlAn是一种物种注释工具,可从宏基因组鸟枪测序数据(即非16S)中分析微生物群落(细菌,古细菌和真核生物)的组成。关于MetaPhlAn的更多信息请访问MetaPhlAn官网。语言:Python。一句话描述:一种物种注释工具。开源协议:自定义开源协议。建议的版本建议使用的版本为“MetaPhlAn 3.0.13”。1.2 环境要求硬件要求硬件要求如表19-1所示。表1-1 硬件要求项目说明CPU鲲鹏920处理器。 软件要求软件要求如表19-2所示。表1-2 软件要求项目版本下载地址Python3.9.6https://www.python.org/downloads/release/python-396/Samtools1.10https://github.com/samtools/samtools/releases/download/1.10/samtools-1.10.tar.bz2 操作系统要求操作系统要求如表19-3所示。表1-3 操作系统要求项目版本下载地址CentOS8.2https://vault.centos.org/8.2.2004/isos/aarch64/ 1.3 移植规划数据本章节给出MetaPhlAn软件在移植过程中涉及到的部分软件安装规划路径的用途及详细说明。表1-4 移植规划数据序号软件安装规划路径用途说明1-基础环境搭建中的各安装包安装路径。参考《HPC解决方案 基础环境搭建指导书》中“安装规划数据”章节。2/path/to/Python-3.9.6Python的安装规划路径。这里的安装规划路径只是一个举例说明,建议部署在共享路径中。现网需要根据实际情况调整,后续章节凡是遇到安装路径的命令,都以现网实际规划的安装路径为准进行替换,不再单独说明。 1.4 配置编译环境前提条件使用SFTP工具将各安装包上传至服务器对应目录下。配置流程表1-5 配置流程序号配置项说明1基础环境搭建参考《HPC解决方案 基础环境搭建指导书》中“集群场景环境搭建”章节。2GCC for openEuler环境搭建参考《用户指南(GCC for openEuler)》。 1.5 获取源码操作步骤步骤 1     下载Python安装包。下载地址: https://www.python.org/downloads/release/python-396/步骤 2     使用SFTP工具将Python安装包上传至服务器“/path/to/Python-3.9.6”目录。----结束1.6 编译和安装1.6.1 安装Python操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令解压Python-3.9.6安装包。cd /path/to/Python-3.9.6tar -xvf Python-3.9.6.tgz步骤 3     执行以下命令进入解压后的目录。cd Python-3.9.6步骤 4     执行以下命令安装依赖。yum install gcc libffi* openssl libssl zlib* bzip2步骤 5     执行以下命令编译安装。./configure --prefix=/path/to/Python-3.9.6 --enable-shared --enable-optimizationsmakemake install步骤 6     执行以下命令配置变量。1.       打开“/etc/profile”文件。vi /etc/profile2.       按“i”进入编辑模式,添加如下内容。export PATH=/path/to/Python-3.9.6/bin:$PATHexport LD_LIBRARY_PATH=/path/to/Python-3.9.6/lib:$LD_LIBRARY_PATH3.       按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。4.       执行以下命令重新加载环境变量。source /etc/profile步骤 7     执行以下命令验证版本。python3 --versionpip3 --version若显示版本号,则表示安装成功:----结束1.6.2 安装Samtools操作步骤步骤 1     下载Samtools安装包“samtools-1.10.tar.bz2”。下载地址:https://github.com/samtools/samtools/releases/download/1.10/samtools-1.10.tar.bz2步骤 2     执行以下命令安装依赖。yum install -y bzip2 bzip2-devel ncurses ncurses-devel xz xz-devel libcurl libcurl-devel zlib zlib-devel步骤 3     执行以下命令解压安装包,并进入解压后目录。tar -jxvf samtools-1.10.tar.bz2cd samtools-1.10步骤 4     执行以下命令编译安装。./configuremake && make install步骤 5     执行以下命令查看版本。samtools --version若显示版本号,则表示安装成功:----结束1.6.3 安装MetaPhlAn操作步骤步骤 1     执行以下命令安装MetaPhlAn。pip3 install metaphlan -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com步骤 2     执行以下命令验证版本。metaphlan --version若显示版本号,则表示安装成功:----结束1.7 运行和验证1.7.1 输入文件下载步骤 1     下载输入文件。下载地址:https://raw.githubusercontent.com/biobakery/biobakery/master/demos/biobakery_demos/data/metaphlan3/input/SRS014470-Tongue_dorsum.fasta.gz----结束1.7.2 安装Bowtie2操作步骤步骤 1     下载Bowtie2。下载地址:http://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.2/bowtie2-2.4.2-linux-aarch64.zip步骤 2     执行以下命令解压安装包。unzip bowtie2-2.4.2-linux-aarch64.zip步骤 3     执行以下命令修改配置文件。1.       打开配置文件。vi /etc/profile2.       按“i”进入编辑模式,添加Bowtie2路径。export PATH=/home/gcc-9.3.1-2020.12-aarch64-linux/bin:/usr/local/python-3.9.6/bin:/home/bowtie2-2.4.2-linux-aarch64:$PATH3.       按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。步骤 4     执行以下命令使配置文件生效。source /etc/profile步骤 5     验证Bowtie2是否安装成功。bowtie2 -h显示如下内容,表示安装成功:----结束1.7.3 运行与结果查看步骤 1     执行以下命令运行算例文件。metaphlan SRS014470-Tongue_dorsum.fasta.gz --input_type fasta > SRS014470-Tongue_dorsum_profile.txt步骤 2     执行以下命令查看输出文件。ls -ltr步骤 3     执行以下命令查看运行结果。less -S SRS014470-Tongue_dorsum.fasta.gz.bowtie2out.txtless -S SRS014470-Tongue_dorsum_profile.txt----结束1.8 故障排除1.8.1 Python安装失败问题现象描述Python安装失败,提示如下信息:关键过程、根本原因分析缺少zlib。结论、解决方案及效果执行以下命令安装zlib。yum install zlib*1.8.2 安装MetaPhlAn时提示ssl异常问题现象描述安装MetaPhlAn时提示ssl模块不可用,报错信息如下图所示:关键过程、根本原因分析ssl模块不可用。结论、解决方案及效果步骤 1     执行以下命令重新编译Python,configure后面添加编译选项。./configure --prefix=/path/to/Python-3.9.6  --enable-shared --enable-optimizations步骤 2     执行以下命令安装。makemake install----结束1.8.3 安装MetaPhlAn时提示缺少“os/rand.c”文件问题现象描述安装MetaPhlAn时提示缺少“os/rand.c”文件,报错信息如下图所示:关键过程、根本原因分析缺少“os/rand.c”文件。结论、解决方案及效果安装Samtools,具体操作请参见1.6.2 安装Samtools章节。1.8.4 MetaPhlAn版本验证报错问题现象描述安装完成后,验证MetaPhlAn版本号,提示无法找到‘_bz2’。关键过程、根本原因分析缺少依赖。结论、解决方案及效果步骤 1     请参见1.6.1 安装Python章节安装bzip2之后,重新编译安装Python。步骤 2     然后参见1.6.3 安装MetaPhlAn章节重新安装MetaPhlAn。----结束1.8.5 运行单个样本出错问题现象描述运行单个样本出错,提示缺少“bowtie2-build”,报错信息如下图所示:关键过程、根本原因分析缺少依赖。结论、解决方案及效果安装Bowtie2,具体操作请参见1.7.2 安装Bowtie2章节。
  • [互动交流] 【DGC】【脚本开发】运行python脚本报错
    【功能模块】DGC->数据开发->脚本开发【操作步骤&问题现象】1、新建python脚本执行后返回错误信息,错误提示:The agent need to be updated tor order a new one.Type is not support, Agent need to be updated【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [讲座&活动公告] Python编程快速入门指南
    直播时间:2022/2/22 19:00-20:00直播嘉宾:Jackey 华为人工智能高级讲师直播链接:https://bbs.huaweicloud.com/live/edu_live/202202221900.html 直播简介:本直播为《开发语言大讲堂》活动第2场直播,本直播将由华为人工智能高级讲师Jackey教你如何入门Python,聊聊Python开发环境与搭建介绍,Python语法格式与编程规范,以及如何系统学习Python及应用,带你用Python实现七段数码管时钟。活动简介:开发语言大讲堂,0基础入门不怕“练”C/C++,Java,Python,JavaScript、RUST多领域内容供你学习, “学测练考”一站式学习服务帮你“修炼升级”,帮助你培养编程思维!参与活动,还可赢取富士INSTAX 一次成像相机、颈肩按摩披肩、榨汁机等1000+超值好礼,快来参加吧!
  • [技术干货] 心情不好的时候,用 Python 画棵樱花树送给自己吧[转载]
    最近发生了很多事情,工作不开心,爱情无果而终,身边的小伙伴陆陆续续离职。虽然都不是会一下子击垮自己的事情,但是积攒起来,还是会有突然感到疲惫和倦怠的时候,有一种不知道下一步要走向哪里的无力感。在这个城市留下了很多的回忆,但是身边的人一个个离开,走到现在,似乎没有太多留恋的了,也没想好未来要去哪里。自己是一个始终需要新鲜感的人,在这里停留了太久,大概到了该说再见的时候了吧。那么,用一个不熟悉的语言,画棵樱花树送给自己吧,代码也可以很浪漫不是吗。520刚刚过了,没有爱情,自己也要好好爱自己才对。一. 绘制步骤1. 环境安装可以参考之前的博客:Python 爬虫实现:抓取电影网站信息并入库2. 图片美化之前没怎么用过 Python,就对别人的代码进行分析和效果优化好啦,顺便学习一下。这个是原来的效果图,有点灰蒙蒙的,微微改动,让它明媚一点。修改之后的代码:from turtle import *from random import *from math import *def tree(n,l):    pd()#下笔    #阴影效果    t = cos(radians(heading()+45))/8+0.25    pencolor(t,t,t)    pensize(n/3)    forward(l)#画树枝    if n>0:        b = random()*15+10 #右分支偏转角度        c = random()*15+10 #左分支偏转角度        d = l*(random()*0.25+0.7) #下一个分支的长度        #右转一定角度,画右分支        right(b)        tree(n-1,d)        #左转一定角度,画左分支        left(b+c)        tree(n-1,d)        #转回来        right(c)    else:        #画叶子        right(90)        n=cos(radians(heading()-45))/4+0.5        ran=random()        #这里相比于原来随机添加了填充的圆圈,让樱花叶子看起来更多一点        if(ran>0.7):            begin_fill()            circle(3)            fillcolor('pink')        #把原来随机生成的叶子换成了统一的粉色        pencolor("pink")        circle(3)        if(ran>0.7):            end_fill()        left(90)        #添加0.3倍的飘落叶子        if(random()>0.7):            pu()            #飘落            t = heading()            an = -40 +random()*40            setheading(an)            dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)            forward(dis)            setheading(t)            #画叶子            pd()            right(90)            n = cos(radians(heading()-45))/4+0.5            pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)            circle(2)            left(90)            pu()            #返回            t=heading()            setheading(an)            backward(dis)            setheading(t)    pu()    backward(l)#退回    bgcolor(0.956,0.9255,0.9882)#设置背景色(把灰色换成淡紫色)ht()#隐藏turtlespeed(0)#速度 1-10渐进,0 最快tracer(0,0)pu()#抬笔backward(50)left(90)#左转90度pu()#抬笔backward(300)#后退300tree(12,100)#递归7层done()1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677之后的效果温暖一点,喜欢这种更有温度的色调:二. 技术学习1. turtle 简介樱花树的绘制效果是通过 Python 中的 turtle 来实现的,Python 的强大之处在于有许多很强大的库,turtle就是其中之一,是 Python 自带的一个库。2. turtle 绘图的基础知识turtle库绘制原理:有一只海龟在窗体正中心,在画布上游走,走过的轨迹形成了绘制的图形,海龟由程序控制,可以自由改变颜色、方向宽度等。(1) . turtle 绘图窗体setup用来设置窗体大小,后两个参数为非必选参数;turtle.setup(width,height,startx,starty)1(2) . turtle 的坐标体系画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向的小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle 绘图中,就是使用位置方向描述小乌龟(画笔)的状态的。(3) . turtle 画笔属性命令    说明turtle.pensize()    设置画笔的宽度turtle.pencolor()    没有参数传入,返回当前画笔颜色;传入参数设置画笔颜色,可以是字符串如 “green”, “red”,也可以是RGB 3元组turtle.speed(speed)    设置画笔移动速度,画笔绘制的速度范围 [0,10] 整数,数字越大越快(4) . turtle 绘图命令运动命令命令    说明turtle.forward(distance)    向当前画笔方向移动distance像素长度turtle.backward(distance)    向当前画笔相反方向移动distance像素长度turtle.right(degree)    顺时针移动degree°turtle.left(degree)    逆时针移动degree°turtle.pendown()    移动时绘制图形,缺省时也为绘制turtle.goto(x,y)    将画笔移动到坐标为x,y的位置turtle.penup()    提起笔移动,不绘制图形,用于另起一个地方绘制turtle.pendown()    移动时绘制图形,缺省时也为绘制turtle.circle()    画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆setx( )    将当前x轴移动到指定位置sety( )    将当前y轴移动到指定位置setheading(angle)    设置当前朝向为angle角度home()    设置当前画笔位置为原点,朝向东dot®    绘制一个指定直径和颜色的圆点控制命令命令    说明turtle.fillcolor(colorstring)    绘制图形的填充颜色turtle.color(color1, color2)    同时设置 pencolor=color1, fillcolor=color2turtle.filling()    返回当前是否在填充状态turtle.begin_fill()    准备开始填充图形turtle.end_fill()    填充完成turtle.hideturtle()    隐藏画笔的turtle形状turtle.showturtle()    显示画笔的turtle形状全局控制命令命令    说明turtle.clear()    清空turtle窗口,但是turtle的位置和状态不会改变turtle.reset()    清空窗口,重置turtle状态为起始状态turtle.undo()    撤销上一个turtle动作turtle.isvisible()    返回当前turtle是否可见stamp()    复制当前图形turtle.hideturtle()    隐藏画笔的turtle形状turtle.write(s [,font=(“font-name”,font_size,“font_type”)])    写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项虽然没有在原来的基础上改动太多的代码,只是简单的给樱花树换了个风格,但是其实也做了很多的尝试和调整,也学到了怎么使用 turtle 。这篇博客磨磨唧唧写了好久,在调整和写的时候也在调整自己的心情。在这中间还趁着周末自己跑去青岛溜达了一圈,比烟台热好多啊,去了一趟一下子想开了,哈哈哈哈,果然还是要多出去溜达溜达啊。有的时候其实想想,想要新鲜感也很容易,既然外面环境给不了,那就自己来创造。最近想买个吉他,准备给自己加点文艺色彩,就算生活暂时不那么美好,自己还是要做一些有意思的事情尽量让自己保持一个好的心态。虽然还是不知道以后要怎样,但是先走好脚下的路,活在当下,以后的事顺其自然就好啦。Everything will be ok~加油!————————————————版权声明:本文为CSDN博主「盛夏温暖流年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/j1231230/article/details/116980258
  • [技术干货] Python实战:导出聊天记录分析你和你的对象聊了什么[转载]
    导出聊天记录生成词云看看你和对象聊了什么(可惜我没女朋友)导出聊天记录打开消息管理器导出的格式选择txt格式(我这里选择导出的路径是桌面所以在桌面上生成了一个包含聊天记录的.txt文件)干货主要有:① 200 多本 Python 电子书(和经典的书籍)应该有② Python标准库资料(最全中文版)③ 项目源码(四五十个有趣且可靠的练手项目及源码)④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)⑤ Python学习路线图(告别不入流的学习)看我(PC端)主页左侧获取,自取就好了。2. 编写代码图中框出来的文本是我们不需要的(比如说图片会在这里面显示为[图片]表情显示为[表情]) 所以我们把它替换掉,我这里用到了正则:string = open(r'C:\\Users\\l1768\\Desktop\\消息记录.txt','r',encoding='utf-8').read()s = re.compile('2020.+洋仔|2020.+✎﹏ℳ๓ 大大大威锅丶|表情|图片|2019.+洋仔|2019.+✎﹏ℳ๓ 大大大威锅丶|撤回了一条消息|系统消息')#编写正则表达式message = re.sub(s,'',string)#替换对应的字符串为空字符串然后我们把经过处理的文本再进行去除特殊字符处理def getText(text):#该函数用来替换文本中出现的特殊字符txt = textfor ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~,。、 :':txt = txt.replace(ch, "")   #将文本中特殊字符替换为空格return txtmessage = getText(message)使用jieba分词并生成词云split_message = jieba.lcut(message)wordcloud_txt = ' '.join(split_message)w=wordcloud.WordCloud(background_color="white", font_path='./fonts/simhei.ttf',width=1600,height=800,max_words=2000)#设置生成词云的参数,background_color指定图片背景颜色,#font_path设置中文字体,要不然中文会显示不出来#width=1600,height=800分别指定图片的宽度像素和高度像素,#max_words指定生成词云的词最大是两千词#还有很多可选参数,大家可以自行百度w.generate(wordcloud_txt)#向词云传递文本w.to_file("聊天记录词云.png")#最后生成词云的图片3.最终生成的结果:4.完整代码:import reimport jiebaimport wordclouddef getText(text):#该函数用来替换文本中出现的特殊字符txt = textfor ch in '!"#$%&()*+,-./:;<=>?@[\]^_‘{|}~,。、 :':txt = txt.replace(ch, "") #将文本中特殊字符替换为空格return txtstring = open(r'C:\Users\l1768\Desktop\消息记录.txt','r',encoding='utf-8').read()s = re.compile('2020.+洋仔|2020.+✎﹏ℳ๓ 大大大威锅丶|表情|图片|2019.+洋仔|2019.+✎﹏ℳ๓ 大大大威锅丶|撤回了一条消息|系统消息')message = re.sub(s,'',string)message = getText(message)split_message = jieba.lcut(message)wordcloud_txt = ' '.join(split_message)w=wordcloud.WordCloud(background_color="white", font_path='./fonts/simhei.ttf',width=1600,height=800,max_words=2000)#设置生成词云的参数w.generate(wordcloud_txt)#向词云传递文本w.to_file("聊天记录词云.png")#最后生成词云的图片文章知识点与官方知识档案匹配,可进一步学习相关知识————————————————版权声明:本文为CSDN博主「落伍的码农」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/Python_shannian/article/details/122937809
  • [技术干货] 用Python实现自动扫雷[转载]
    自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式。一、准备工作1.扫雷游戏我是win10,没有默认的扫雷,所以去扫雷网下载http://www.saolei.net/BBS/2.python 3我的版本是 python 3.6.13.python的第三方库win32api,win32gui,win32con,Pillow,numpy,opencv可通过 pip install --upgrade SomePackage 来进行安装注意:有的版本是下载pywin32,但是有的要把pywin32升级到最高并自动下载了pypiwin32,具体情况每个python版本可能都略有不同二、关键代码组成1.找到游戏窗口与坐标#扫雷游戏窗口class_name = "TMain"title_name = "Minesweeper Arbiter "hwnd = win32gui.FindWindow(class_name, title_name)#窗口坐标left = 0top = 0right = 0bottom = 0if hwnd:print("找到窗口")left, top, right, bottom = win32gui.GetWindowRect(hwnd)#win32gui.SetForegroundWindow(hwnd)print("窗口坐标:")print(str(left)+' '+str(right)+' '+str(top)+' '+str(bottom))else:print("未找到窗口")2.锁定并抓取雷区图像#锁定雷区坐标#去除周围功能按钮以及多余的界面#具体的像素值是通过QQ的截图来判断的#更多Python视频、源码、资料加群857662006免费获取left += 15top += 101right -= 15bottom -= 42#抓取雷区图像rect = (left, top, right, bottom)img = ImageGrab.grab().crop(rect)3.各图像的RGBA值#数字1-8 周围雷数#0 未被打开#ed 被打开 空白#hongqi 红旗#boom 普通雷#boom_red 踩中的雷rgba_ed = [(225, (192, 192, 192)), (31, (128, 128, 128))]rgba_hongqi = [(54, (255, 255, 255)), (17, (255, 0, 0)), (109, (192, 192, 192)), (54, (128, 128, 128)), (22, (0, 0, 0))]rgba_0 = [(54, (255, 255, 255)), (148, (192, 192, 192)), (54, (128, 128, 128))]rgba_1 = [(185, (192, 192, 192)), (31, (128, 128, 128)), (40, (0, 0, 255))]rgba_2 = [(160, (192, 192, 192)), (31, (128, 128, 128)), (65, (0, 128, 0))]rgba_3 = [(62, (255, 0, 0)), (163, (192, 192, 192)), (31, (128, 128, 128))]rgba_4 = [(169, (192, 192, 192)), (31, (128, 128, 128)), (56, (0, 0, 128))]rgba_5 = [(70, (128, 0, 0)), (155, (192, 192, 192)), (31, (128, 128, 128))]rgba_6 = [(153, (192, 192, 192)), (31, (128, 128, 128)), (72, (0, 128, 128))]rgba_8 = [(149, (192, 192, 192)), (107, (128, 128, 128))]rgba_boom = [(4, (255, 255, 255)), (144, (192, 192, 192)), (31, (128, 128, 128)), (77, (0, 0, 0))]rgba_boom_red = [(4, (255, 255, 255)), (144, (255, 0, 0)), (31, (128, 128, 128)), (77, (0, 0, 0))]4.扫描雷区图像保存至一个二维数组map#扫描雷区图像def showmap():img = ImageGrab.grab().crop(rect)for y in range(blocks_y):for x in range(blocks_x):this_image = img.crop((x * block_width, y * block_height, (x + 1) * block_width, (y + 1) * block_height))if this_image.getcolors() == rgba_0:map[y][x] = 0elif this_image.getcolors() == rgba_1:map[y][x] = 1elif this_image.getcolors() == rgba_2:map[y][x] = 2elif this_image.getcolors() == rgba_3:map[y][x] = 3elif this_image.getcolors() == rgba_4:map[y][x] = 4elif this_image.getcolors() == rgba_5:map[y][x] = 5elif this_image.getcolors() == rgba_6:map[y][x] = 6elif this_image.getcolors() == rgba_8:map[y][x] = 8elif this_image.getcolors() == rgba_ed:map[y][x] = -1elif this_image.getcolors() == rgba_hongqi:map[y][x] = -4elif this_image.getcolors() == rgba_boom or this_image.getcolors() == rgba_boom_red:global gameovergameover = 1break#sys.exit(0)else:print("无法识别图像")print("坐标")print((y,x))print("颜色")print(this_image.getcolors())sys.exit(0)#print(map)5.扫雷算法这里我采用的最基础的算法1.首先点出一个点2.扫描所有数字,如果周围空白+插旗==数字,则空白均有雷,右键点击空白插旗3.扫描所有数字,如果周围插旗==数字,则空白均没有雷,左键点击空白4.循环2、3,如果没有符合条件的,则随机点击一个白块#插旗#更多Python视频、源码、资料加群857662006免费获取def banner():showmap()for y in range(blocks_y):for x in range(blocks_x):if 1 <= map[y][x] and map[y][x] <= 5:boom_number = map[y][x]block_white = 0block_qi = 0for yy in range(y-1,y+2):for xx in range(x-1,x+2):if 0 <= yy and 0 <= xx and yy < blocks_y and xx < blocks_x:if not (yy == y and xx == x):if map[yy][xx] == 0:block_white += 1elif map[yy][xx] == -4:block_qi += 1if boom_number == block_white + block_qi:for yy in range(y - 1, y + 2):for xx in range(x - 1, x + 2):if 0 <= yy and 0 <= xx and yy < blocks_y and xx < blocks_x:if not (yy == y and xx == x):if map[yy][xx] == 0:win32api.SetCursorPos([left+xx*block_width, top+yy*block_height])win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)showmap()#点击白块def dig():showmap()iscluck = 0for y in range(blocks_y):for x in range(blocks_x):if 1 <= map[y][x] and map[y][x] <= 5:boom_number = map[y][x]block_white = 0block_qi = 0for yy in range(y - 1, y + 2):for xx in range(x - 1, x + 2):if 0 <= yy and 0 <= xx and yy < blocks_y and xx < blocks_x:if not (yy == y and xx == x):if map[yy][xx] == 0:block_white += 1elif map[yy][xx] == -4:block_qi += 1if boom_number == block_qi and block_white > 0:for yy in range(y - 1, y + 2):for xx in range(x - 1, x + 2):if 0 <= yy and 0 <= xx and yy < blocks_y and xx < blocks_x:if not(yy == y and xx == x):if map[yy][xx] == 0:win32api.SetCursorPos([left + xx * block_width, top + yy * block_height])win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)iscluck = 1if iscluck == 0:luck()#随机点击def luck():fl = 1while(fl):random_x = random.randint(0, blocks_x - 1)random_y = random.randint(0, blocks_y - 1)if(map[random_y][random_x] == 0):win32api.SetCursorPos([left + random_x * block_width, top + random_y * block_height])win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)fl = 0def gogo():win32api.SetCursorPos([left, top])win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)showmap()global gameoverwhile(1):if(gameover == 0):banner()banner()dig()else:gameover = 0win32api.keybd_event(113, 0, 0, 0)win32api.SetCursorPos([left, top])win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)showmap()这个算法在初级和中级通过率都不错,但是在高级成功率惨不忍睹,主要是没有考虑逻辑组合以及白块是雷的概率问题,可以对这两个点进行改进,提高成功率转载至:https://www.cnblogs.com/chestnut-egg/p/9302238.html
  • [技术干货] 这款Python小程序自动抠图只需5秒,秒杀PS手动抠图?[转载]
    原文链接:https://blog.csdn.net/weixin_55822277/article/details/122892877导语 大家好!我是木木子,今天天气不是很好,下雨了,让我没点儿写文章的动力啊~写程序:一天到晚没事做,一行代码改一天,从白天学完天黑!在日常的工作和生活中,我们经常会遇到需要抠图的场景,即便是只有一张图片需要抠,也会抠得我们不耐烦,倘若遇到许多张图片需要抠,那就……今天教你用Python制作一款界面化的抠图小程序吧!正文PS 小故事一个刚恰完午饭,正在用刷网页浪费生命的......程序员老哥活灵活现。一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:​是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上怎么这么模糊?!程序员老哥表示——我只要女神,其他的都不要!终于经过程序员老哥三天三夜茶饭不思的结果下成功达到这个效果。一键下载,一键甩图:​​1)前期准备1.1 首先给大家介绍一款免费的抠图网站:国外版抠图神器网站,这个抠图网站叫 remove网站链接:点击即可获取网站地址哈!1.2 网站小介绍​自动识别人和背景、商品和背景,而且识别的精准度非常高,号称100%自动、5秒时间扣完。一张图至少要抠1分钟吧。它只要5秒~打开之后是这样的:它推出了一个基于 Python、Ruby 和深度学习去除背景色的这么一个工具,它支持用 Python 调用其 API 接口,达成去除背景,留下前景主体的效果。2)注册一个账号想要获得 API,首先要有一个账户,账户的申请很简单,邮箱即可。用 API 的话,每天只能处理 50 张图片哦!直接网站上使用的话是无限制免费的!获取步骤:登陆进去,第一步点击 'Tools & API',第二步点击 ‘API Docs’:第三步点击 ‘Get API Key’:第四步点击 ‘Show’,就出现自己的 API 啦!2)正式抠图2.1 环境安装本文是基于Tkinter的界面化小程序!模块安装:removebg、Pillow。pip install -i https://pypi.douban.com/simple/ +模块名2.2 素材(可自选)2.3 主程序代码def openfile():    #这里将API key改为获得的key    rmbg = RemoveBg('API key', 'error.log')    filename = filedialog.askopenfilename()    rmbg.remove_background_from_img_file(filename)    imagepath = filename+'_no_bg.png'    img = Image.open(imagepath)    img.show()    showinfo('完成生成', f'图片处理完成,路径为: {imagepath}')    #print(filename)  root=Tk()root.title("抠图小程序")#窗口大小root.geometry("500x500")btn = Button(root, text='打开图片',command=openfile,width=15,height=2)  # 绑定方式1: commandbtn.place(x=20,y=2,anchor='w')btn.pack(padx=5, pady=50)lbl=Label(root,text='--——顾木子吖 抠图技术哪家强--')lbl.pack()root.mainloop()3)效果图3.1 界面展示​3.2 图片展示完美抠图效果!哈哈哈啊~总结好啦!有一说一上面的抠图效果还是蛮不错的哈!感觉这是为设计工作者提供了蛮大方便呢~
  • [技术干货] 《看漫画学Python》笔记系列: 一.准备出发 二.编程基础
    新年过去了,努力工作,不断进阶又成了合格打工人的主旋律。今天新开书籍记录总结,书名叫《看漫画学Python》,是继《图解HTTP》之后的第二本,都是漫画风格,结构全面,也轻松易读。大家都知道 Python是一门既简单又强大的编程语言,被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。很多人很羡慕编程大牛,希望自己也可以入门,但是不知道如何下手,今天我们就来挑战学习下!Let's go !        一. 满箱加油!准备出发!1. Python历史              出现时间:1 9 8 9 年              创始人:Guido van Rossum(江湖称“龟叔”)              属性:解释性编程语言              发展史:如下图,2.x与3.x系列版本不兼容,因为2.x版本于2020年停止维护,所以目前使用多为3.x系列2. Python特点              (1) 简单、易学、免费、开源              (2) 解释型语言:边解释边执行,python解释器会将源代码转换成中间字节码形式,然后将其解释为机器语言并执行。另一种是编译型语言,指源代码通过编译器编译翻译成计算机指令,然后再执行,所以编译型语言相比解释型语言速度快。              (3) 可移植:无须修改,应用于多平台。              (4) 代码规范:强制缩进,可读性强。              (5) 面向对象:简单来说是指在程序设计中能够采用封装、继承、多态的设计方法。              (6) 胶水语言:指用来连接软件组件的程序设计语言,通常是指脚本语言。如可以用python语言调用C语言代码,并可以借助C语言的接口驱动调用所有编程语言。              (7) 丰富的库              (8) 动态语言:是在运行时可以改变其结构的语言。              (9)动态数据类型:在声明变量时不需要指定数据类型,但需要解释器执行代码时去辨别数据类型,此特点让编程变的简单,反之是静态语言。              (10)高级语言:是指高度封装了的编程语言,相对于机器语言,更加适合人类编写与阅读。               ❶ 问:大家在特点中看到Python是解释型语言,也就是说源代码需要通过解释器进行解释执行。而编程语言分为编译型语言和解释型语言,我们需要了解它们的区别,才能够更好的理解运用,大家知道这些区别吗?              【耐心阅读,文末为大家解答哦~】3. Python的开发环境              下载python解释器(官网:python.org下载)、基础库、交互式运行工具-python shell              注意:解释器安装时勾选□Add Python 3.x to PATH,目的是把python的指令添加到环境变量中,以使在windows下命令提示符中,任何目录下,只要输入python就能找到指令。安装完成后如下4. 编写和运行一个hello world 程序              两种方式:交互方式和文件(python脚本文件)方式              ▶交互方式:输一条指令,马上就运行              交互方式在进行数据分析时常用,但是运行大规模长时间的程序需要用文件方式。              ▶文件方式              编写python代码时,可以用任意一种文本编辑工具,比如记事本(注意编写保存时使用.py后缀,并且字符集从默认ANSI阿斯玛的变为UTF-8)。              保存后:              记事本没有高亮显示,用起来不方便—>可以用第三方专门文本编辑工具,即专业的IDE(集成开发环境)工具,如              ①PyCharm               ② AOC社区在线开发环境——CloudIDE,它提供了一个在线的python环境,链接: https://devzone.huawei.com/cn/enterprise/aoc/sumOnlineDevelop.html二. 编程基础那些事               AOC开发者社区进阶学习视频:《 Python基础与AOC Open-api》也概括性介绍了Python的基础语法、AOC业务包开发中函数的编写方法,以及典型的API命令示例,大家可以结合此视频共同总结。              链接:https://devzone.huawei.com/cn/enterprise/aoc/videos/aocPython.html?id=119&number=1&from=allVideos1. 标识符              注意区别关键字:关键字是规定好的特殊的字符,而标识符是自定义的              (1)区分大小写:Myname和myname是两个不同的标识符              (2)首字符可以下划线或字母(广泛的字母,如汉字),但不能是数字              (3)首字符外的其他字符必须是下划线、字母和数字              (4)关键字不能作为标识符              (5)不能使用内置函数作为标识符2. 关键字              注意:只有红框中三个关键字是大写,其余都是小写。3. 变量4. 语句              在python中,一行代码表示一条语句,代表解释器能够执行一次解释任务,在一般情况下语句结束时不加分号。5. 代码注释              # 位于注释行的开头,后有空格(不必须,但符合好的编程规范),接着才是注释的内容              # 可以单行注释,也可以语句末端注释              ❷ 问:通常代码第1行 # coding=utf-8 的注释很特殊,你知道什么意思吗?              【耐心阅读,文末为大家解答哦~】6. 模块              模块=文件              文件中会有很多的代码元素,比如说变量、函数、类等,这些内容构成了我们的程序代码。那么这一个文件里所包含的这些变量、函数、类等会被一个叫模块的代码元素给管理起来。              比如,班级为一个模块,那么班级里的学生、老师、桌椅等就是模块中的代码元素。              如果需要访问另一个模块中内容时,需要一些规范,如下三种形式导入语句              ▷ import<模块名>              ▷ from<模块名> import<代码元素>              ▷ from<模块名> import<代码元素>as<代码元素别名>      #此方式防止出现名字冲突7.动手:实现两个模块间代码元素的访问                (1)在同一文件夹下创建两个模块,hello和world,即两个代码文件:hello.py和world.py               (2)world模块代码:                      hello模块代码:              提示:• 对模块,即对文件命名时尽量不要使用中文,尽量不要大写,不要使用特定的函数命名。                        • 初始阶段暂时不用pycharm、Visual Studio Code等专业工具,大家可以先试试简单的代码编写、目录查看和运行              (3)在命令提示符中打开当前目录:输入cmd,回车,打开命令提示符即看到当前路径              (4)dir看目录中有哪些文件;运行: python + 文件名(可以用tab键补齐)回车              大家有动手试一试吗?挺简单的,一起编写属于你自己的hello world并运行吧~———————————————————————————————————今天的学习就到这里,一起来看下帖中的2个问题。❶ 问:编程语言分为编译型语言和解释型语言,大家知道这些区别吗?——> 解释器编译器概述直接执行用编程语言编写的指令的程序把源代码转换成(翻译)低级语言的程序启动速度快慢运行速度解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度比编译后的程序运行是慢的。把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快跨平台能力适合制作跨平台程序不适合跨平台输出输出运行结果输出翻译完成后的可执行文件,是一个二进制数据流举例C语言Python注意点1.都无法直接运行;2.最终执行程序的不是系统,而是CPU。使用选择互补关系,以实际需要决定选择。扩展:编译器的主要工作流程            源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)            编译器调用预处理器进行相关处理,将源代码进行优化转换(包括清除注释、宏定义、包含文件和条件编译),然后,通过将经过预处理的源代码编译成目标代码(二进制机器语言),再通过调用链接器外加库文件(例如操作系统提供的API),从而形成可执行程序,让机器能够执行。❷ 问:通常代码第1行 # coding=utf-8 的注释很特殊,你知道什么意思吗?——> 这个注释告诉Python解释器该文件的编码集是UTF-8,可以避免产生的代码中有中文等亚洲文字时无法解释文件的问题。该注释必须被放在文件的第1行或第2行才有效。下一章: 数字类型的数据与运算符
  • [交流吐槽] 开始一个简单的接口测试(Python)
    利用python发送第一个请求关于HTTP请求,建议大家提前了解一下,再来看该篇文章该篇文章以简单的登录接口为例,干货来了:首先利用python发请求就会用到request库,先导入进来import requests1导入该库之后,就开始代码主体部分了#首先我们要把我们要测试接口API写进来url="http://localhost:8080/jwshoplogin/user/login.do"#紧接着把我们需要的参数定义一下userinfo={"username":"大娟",           "password":"Aa111111"}#参数定义完成后,就该让这个请求带着这个参数去乖乖的请求服务器了,下面的代码意思为将响应回来的信息以文本格式给到resres=requests.post(url,data=userinfo).text#得到响应信息后,将他打印出来print(res)这个为该接口正常响应回来的信息,作为测试我们当然要写个断言来判断他响应回来的对不对嘛,#.find这个方法是在响应回来的信息里面找登录成功四个字,找不到会返回-1负一的值msg=res.find("登录成功")if msg>0:    print("测试通过")else:    print("测试失败")一个简单的接口测试就这么完成了。将请求参数进行参数化处理这时候我们用到的是csv文件,现将csv库倒进来,还有我们必要的request库import requestimport csv下面是代码主体,具体解释我会写进代码里url='http://localhost:8080/jwshoplogin/user/login.do'#上面url就不解释了,但是userinfo我要说下,这里为空是因为我一会在文件里读取的内容放到这里面userinfo={}#下面的两个是对文件的操作,r为对文件读(read),w为对文件写(write)file1=open("interfacePara.csv",'r')file2=open("loginResult.csv","w")#这个意思为将读出来的内容放到table里面table=csv.reader(file1)for row in table:#第一次循环#将读到的第一行第一列的值给到username    userinfo["username"]=row[0]#将读到的第一行第二列的值给到password    userinfo["password"]=row[1]#这时候userinfo拿到的值为username="大娟",password="Aa111111"    response=requests.post(url,data=userinfo).text#查看一下响应回来的信息    print(response)    print(row[2]) #在响应回来的信息里面找csv文件里的第一行第三列的值,然后做判断,写到文件loginResult.csv里面    r=response.find(row[2])    if r>0:        print("测试通过") #因为在csv文件里每个分割是用逗号分割的所以这个要加上逗号,而且是英文格式的大家不要搞错,"\n"是换行的意思        file2.write(row[0]+","+row[1]+","+row[2]+","+"测试通过"+"\n")    else:        print("测试异常")        file2.write(row[0] + "," + row[1] + "," + row[2] + "," + "测试失败" + "\n")
  • [参赛经验分享] 【华为云DevCloud软件编程大赛】【分享汇总】【赛道一】选手算法&amp;代码&amp;视频&amp;心得分享汇总
    说明:为了让大家辛苦分享的内容不被埋没,可以被看到,已经把所有选手分享的内容都汇总到本帖,也请大家看到优秀内容给分享者一些鼓励,多多评论点赞哦~比赛链接:https://competition.huaweicloud.com/information/1000037176/introduction内容汇总如下视频分享帖:1.华为云DevCloud软件编程大赛—优秀选手作品展播2.华为云DevCloud软件编程大赛 直播答疑会 视频录播3.5月7日直播录播4.txt文档和pygame实现每日pk地图本机跑5.赛道一:思路及经验分享,希望对大家有所帮助!!(来自有幸被选中优秀选手视频展播的小白)6.赛道一思路分享(一等奖)7.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会心得、算法思路类分享帖:1.口罩大作战(赛道一)二等奖解题思路分享2.最后一天的十次机会也用完了,来说说感受3.关于口罩大作战赛道一(C++)的记录和总结——White-Loub4.赛道一小结(C++)_本次竞赛算法思路与部分具体实现代码以及学习c++的资源链接和计算机速成课视频链接5.口罩大作战(赛道一)python思路以及代码分享6.赛道一解题思路分享7.赛道一:思路及经验分享,希望对大家有所帮助!!(来自有幸被选中优秀选手视频展播的小白)8.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会9.赛道一思路分享(一等奖)10.口罩大作战(赛道一)陪跑经历和算法思路代码(C++)分享11.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会12.口罩大作战(赛道一)算法思路分享(三等奖)16.赛道一 综合排名第六 算法小白思路分享(三等奖)代码分享帖:1.口罩大作战(赛道一)二等奖解题思路分享2.赛道一口罩配送大作战代码分享3.关于口罩大作战赛道一(C++)的记录和总结——White-Loub4.txt文档和pygame实现每日pk地图本机跑5.赛道一python地图绘制分享6.赛道一python分享7.大赛塞到一代码。献丑了。8.口罩大作战(赛道一)python思路以及代码分享9.赛道一解题思路分享10.赛道一:思路及经验分享,希望对大家有所帮助!!(来自有幸被选中优秀选手视频展播的小白)11.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会12.口罩大作战(赛道一)陪跑经历和算法思路代码(C++)分享13.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会14.【赛道一代码分享】 可以完成 但效果不好测试工具分享:1.官方测试工具2.赛道一,基于官方测试程序改的随机地图生成,自动测试1000幅(可自己更改测试数目),适用于配送结束未配送完的同学其他:华为云DevCloud软件编程大赛常见问题华为云DevCloud软件编程大赛——选手问题收集帖
总条数:2474 到第 页
上滑加载中