Python入门(一)·环境配置与python基础

2023-11-13

这篇博客记录我的python入门学习过程。
使用阿里云服务器ubuntu 18.04
关于Linux的入门参照上一篇博客
学习使用的视频来自B站 黑马程序员python教程

python简介

它是作者基于C语言编辑的解释器
最大的优点是开源得很早。
编译器是把编程语言翻译成机器语言使计算机能够读懂的程序。
编译器有两种,一种是编译器,一种是解释器,它们工作的时间点不同。
在这里插入图片描述
解释性语言会一行行地解释后一行行地提交给cpu,相比于编译性语言,翻译速度较慢;但优点是解释器解释出的代码可以在多平台转移,只要不同平台上有对应平台的解释器,一份代码就可以在多平台上执行。

python的特点
1.完全面向对象
2.拥有强大的标准库
3.提供大量的第三方模块

python环境配置

解释器python

python2.x解释器 python
python3.x解释器 python3

其他解释器:
CPython——官方版本的C语言实现
Jython ——可以运行在java平台
IronPython——可以运行在.NET和Mono平台
PyPy ——python实现的,支持JIT即时编译

交互式 ipython

在终端中直接进入python
可以用exit()退出

IPython是一个python的交互式shell,在终端用命令ipython3进入。
支持自动补全
自动缩进
支持bash shell命令
内置了许多有用的功能和函数
基于BSD开源

集成开发环境 pycharm

IDE 继承开发环境
继承了开发软件需要的以下工具
图形用户界面
代码编辑器(自动补全 自动缩进)
编译器、解释器
调试器(断点、单步)
。。。

pycharm安装和使用

由于我用的是云服务器ubuntu,没有图形界面,下载pycharm也无法使用,因此这部分暂时不写。如果后续有使用再补充。

anaconda安装

anaconda是管理python包的一个工具,能提供工具包下载和管理服务。在这里记录一下anaconda安装的过程
参考链接linux下安装anaconda
1、进入官网选择要下载的对应操作系统的版本
https://www.anaconda.com/distribution/
2.上传到云服务器上。这里我是直接放在普通用户的home目录下的创建的anaconda文件夹。
3.bash Anaconda3-2021.05-Linux-x86_64.sh
即执行安装程序,这里文件名可以用自动补全
根据提示操作,这里把安装位置也放在上述文件夹下——还没弄懂Linux的文件安装是否要遵守什么规则。
如果提示缺少什么包
用yum install -y xxxx 安装对应包即可
4.环境变量配置
还需要配置环境变量
sudo vi /etc/profile
然后按i进入插入模式,再按向下键到文件最下面,在文件末尾加入:
#Anaconda
export PATH=$PATH:/home/python/anaconda3/bin
(注意这里的路径应该是刚才选择的安装路径)
按下esc键退出插入模式,再输入:wq退出编辑。
然后重新载入配置文件
source /etc/profile
激活后即可使用anaconda。

Anaconda常用命令整理

参考自博客Anaconda常用命令大全

管理conda

1.查看conda版本

conda --version

2.升级当前版本conda

conda updata conda

管理环境

1.创建并激活一个环境

conda create --name snowflake biopython

2.激活新环境

source activate snowflakes

新的开发环境会被默认安装在你conda目录下的envs文件目录下。也可以指定一个其他的路径
3.列出所有环境

conda info -e

4.切换到另一个环境

conda activate/deactivate name

5.复制一个环境
通过克隆来复制一个环境。这儿将通过克隆snowflakes来创建一个称为flowers的副本。

conda create -n flowers --clone snowflakes

6.删除一个环境

conda remove -n flowers 

conda用yaml导入和导出环境

# 导出和迁移环境
conda env export > environment.yaml
# 在新环境中导入
conda env create -f environment.yaml
# create完了再更新一下
conda env update -f environment.yaml

管理python

1.安装一个不同版本的python

conda create -n name python=3

2.关闭环境并返回系统目录

source deactivate

管理包

1.查看已安装包

conda list

2.向指定环境安装包

conda install --name env_name package_name

3.到anaconda资源网站或其他第三方网站安装包
到网站搜索获得对应指令即可
4.使用pip安装包
对于那些无法通过conda安装或者从Anaconda.org获得的包,我们通常可以用pip命令来安装包。

移除包、环境、conda

conda remove -n env_name package_name
rm -rf ~/anaconda
conda remove --name your_env_name --all

分享环境

conda activate target_env_name
conda env export > environment.yml
conda env create -f environment.yml

给anaconda添加清华镜像源

清华镜像站使用帮助anaconda
先执行命令

conda config --set show_channel_urls yes

在系统目录下生成.condarc文件,访问该文件,修改内容为:

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

最后清除缓存索引保证使用的是镜像源

conda clean -i

python基础

py文件命名规则 必须以 字母、下划线开头,并建议文件名中只有小写字母。

文件编码

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

注释

注释的作用——让人看得懂。
单行注释(行注释)
# 注释内容
为了保证整齐,在与代码不同行时,星号后一般加一个空格
如果与代码同行,与代码最少间隔2个空格
多行注释(块注释)
一对连续的三个引号之间的内容,单双引号都可以
‘’‘
注释内容
’‘’
对于复杂的操作,应在代码开始前多行注释
对比较难懂的某一句代码,应在该行上方或后面补充代码。
注释内容应该假设阅读者读得懂代码,只要注释代码的用处。

关于代码规范,官方给出了说明文档
http://www.python.org/dev/peps/pep-0008/
谷歌有提供对应的中文说明文档

运算符

算数运算符

+、-、*、/——加减乘除
//——取整除
%——取余数
**——幂
在python中,*运算符可以用于字符串,结果就是字符串重复指定次数

比较运算符

比较运算符

逻辑运算符

与运算符——and
或运算符——or
非运算符——not

赋值运算符

在这里插入图片描述

字符串中的转义字符

在这里插入图片描述

变量的基本使用

变量定义

每个变量在使用前都必须被赋值,赋值后变量才会被创建
等号= 用来给变量赋值

变量名只有第一次出现的时候才是定义变量,再次出现时就是使用已定义好的变量。

变量的类型

在Python中定义变量不需要说明变量类型,解释器会根据等号右侧的数据理解保存的数据类型,以下依次为字符串变量、整数型变量、布尔变量、浮点数型
var_str_name = " 字符串 "
var_int_name = 18
var_bool_name = True or False
var_float_name = 18.0

python的变量类型可以分为
1.数字型
整型 int
长整型 Long——在python3.0后就没有长整型了。
浮点型 float
布尔型 bool
复数型 complex
2.非数字型
字符串类型 str
列表
元组
字典

函数type可以查看变量的具体类型
不同类型数据的计算
1.数字型数据可以直接进行运算;其中bool型变量以数字1、0参与运算。
2.字符串变量之间可以用+号进行拼接
3.字符串变量可以和整型用*进行重复拼接
4.数字型变量和字符串变量不能进行其他运算。

变量的输入

函数input用于获取用户的输入
input(“输入提示信息”)

变量类型转换

函数int()
函数float()
函数str()

变量的格式化输出

格式化操作符 %
包含%的字符串称为格式化字符串
%和不同的字符连用,不同的数据类型需要不同的格式化字符

格式化字符 说明
%s 字符串
%d 有符号十进制整数,例子%06d,输出字符用整型表示,显示6位,不足处用0补足
%f 浮点数,例子%.02f,输出字符用浮点数表示,小数点后显示2位
%% 输出%
语法格式如下:
print(“格式化字符串”,%(对应变量元组))

补充内容:
python中目前有3种方法在输出中包含变量,以上为第一种
第二种:str.format()
即用{}代替格式化控制符,用.format方法指出对应位置的变量内容

intput:'Hello {name}'.format(name='testerzhang')
output:'Hello testerzhang'
intput:'{2}, {1}, {0}'.format('a', 'b', 'c')
output 'c,b,a' 

第三种:在python3.6之后可以直接在字符串中用{var_name}
其中user_name可以是变量名、列表元素、字典值

变量的命名

1.标识符和关键字
标识符由数字、字母、下划线组成,不可以以数字开头。
关键字就是python已经内置的标识符,具有特殊的功能和含义,不允许定义和关键字同名的变量名。
查看内置关键字的方法:

import keyword
print(keyword.kwlist)

注意:python标识符区分大小写
命名规则:
变量定义时,等号= 左右应各有一个空格
官方推荐命名方法:如果需要多个单词组成标识符,每个单词都小写,用下划线连接。
驼峰命名法:大小驼峰命名法。

常用语句与语法

if语句与if嵌套(判断语句/分支语句)

#if-else语句
if condition:
	代码块1
else:
	代码块2
#if-elif语句
if condition1:
	代码块1
elif condition2:
	代码块2
elif condition3:
	代码块3
else:
	代码块4
#if嵌套
if condition1:
	if condition1_1:
		if condition1_1_1:
			代码块1  
			#满足条件condition1、condition1_1、condition1_1_1执行
		代码块2  
		#满足条件condition1、condition1_1时执行
	代码块3
	#满足条件condition1时执行

import导入模块

 import package_name
 import package_name as shot_package_name
 from package_name import function_name
 from package_name import *

#导入模块后如何查看该模块有什么功能
import package_name
package. #按下tab

循环 while break continue

程序执行有3种流程:顺序、分支、循环

while condition: #condition可以是条件、计数器等
	代码块1
	代码块2
	条件处理语句  #改变condition中判断条件的变量,可以是计数加一或其他
	if break_condition:
		代码块3
		break
		# break直接结束循环,跳到代码块6去执行
	if continue_condition:
		代码块4
		continue
		# continue跳过当前这次循环的后续代码,即直接跳回代码块1
		# 在while中,一般不用continue,因为条件处理语句是在代码块中
		# 更多地用在for循环中
	代码块5

代码块6

# while 循环也可以嵌套,这里不举例了

循环(遍历) for语句

python 中 for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

for item in sequence:
	代码块1
	# item是列表中一个元素 或字符串中一个字符(包括空格等)
for num, item in enumerate(sequence):
	代码块2
	# num是表示item在sequence中对应位置
	# enumerate()返回一个……对象
	#下面是enumerate的说明
enumerate(iterable[, start]) -> iterator for index, value of iterable
 |
 |  Return an enumerate object.  iterable must be another object that supports
 |  iteration.  The enumerate object yields pairs containing a count (from
 |  start, which defaults to zero) and a value yielded by the iterable argument.
 |  enumerate is useful for obtaining an indexed list:
 |      (0, seq[0]), (1, seq[1]), (2, seq[2]), ...

	'''
		完整的for-else循环。
		如果循环体内部使用break退出循环,else中代码块不会被循环,
		如果集合中所有元素都被遍历了,那么会执行else中的代码块
	'''
	for item in iteration:
		代码块1
	else:
		代码块2

match-case语句(switch) in python3.10 beta

近期发布的python3.10 beta版本中增加了对switch语法的支持。
在这里插入图片描述
在这里插入图片描述

函数基础

函数的基本使用:定义、调用

1.函数的定义

# 函数是相对独立的代码,
#定义函数时应与其他代码(包括注释)保留两行空行


def function(argument1,argument2,...):
	'''
		函数说明文档,前后用3对引号
		对功能较简单的函数直接给出返回值意义或功能
		对复杂的函数应该说明其输入参数意义,输出形式,及其他内容
		说明之后应空1行开始代码块
	'''
	
	代码块

函数的名称应该能表示函数的功能
函数的名称就是标识符,应符合标识符的命名规则要求

2.函数的导入和调用

import function_file_name
# 这里导入的应该是保存函数定义的文件的名字
#导入后可以直接以使用工具包的方法使用该函数
function_file_name.function(arg1,arg2,...)

函数的参数、返回值

1.参数的使用

形参:定义函数时括号中的参数
实参:调用函数时括号中传入的参数

2.返回值

函数中用 return 返回函数值
注意 return之后的函数代码不会被执行,return是一个结束函数的标志

3.函数的嵌套调用
def function1():
	代码块1
def function2():
	代码块2
	function1()
	代码块3
# 调用函数2时,内部会调用函数1,
# 即调用函数2会执行代码块2、代码块1、代码块3

函数的参数传递

这部分内容我觉得菜鸟教程中讲得比黑马程序员python视频教程好得多:菜鸟教程python3-函数的参数

在 python 中,类型属于对象,变量是没有类型的

a=[1,2,3]
a="Runoob"

以上代码中,[1,2,3] 是 List 类型,“Runoob” 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。

可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象

不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。

可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

python 函数的参数传递:

不可变类型:类似 C++ 的值传递,如整数、字符串、元组。如 fun(a),传递的只是 a 的值,没有影响 a 对象本身。如果在 fun(a) 内部修改 a 的值,则是新生成一个 a 的对象。

可变类型:类似 C++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会受影响

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

函数的参数

以下是调用函数时可使用的正式参数类型:

必需参数
关键字参数
默认参数
不定长参数

必需参数

必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

默认参数

调用函数时,如果没有传递参数,则会使用默认参数。

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:

def printinfo( arg1, *vartuple ):
   '''打印任何传入的参数'''
   print ("输出: ")
   print (arg1)
   print (vartuple)
 
# 调用printinfo 函数
printinfo( 70, 60, 50 )

匿名函数

python 使用lambda来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  1. lambda 只是一个表达式,函数体比 def 简单很多。
  2. lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  3. lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  4. 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda [arg1 [,arg2,.....argn]]:expression 

模块

模块是python程序架构的核心概念
1.各种工具包都是模块
2.以扩展名.py结尾的python文件都是模块
3.模块中定义的函数和全局变量是模块可以提供给外界使用的工具

模块名也是标识符,需要符合标识符命名规则:
调用模块中的内容,即用 module.var 或者 module.function的方法使用。

pyc文件

在执行过的python文件的目录下,会有一个__pycache__文件夹,下面放的就是.pyc文件(二进制文件),这些文件是编译过的python文件。
在import 一个模块后,代码导入的其实是这个.pyc。
这会使得一行一行编译执行的解释器在导入模块时有更快的运行速度。

高级变量类型

需要说明的是,这三种变量类型都可以看作sequence序列类型,也可以理解为容器,因此有一些通用的方法。

列表

列表 List 在其他语言中被称为数组。
专门用于存储一串信息,列表的索引从0开始

	# list的定义
	list1=[element0, element1, element2]
	# list内元素的取用
	list1[1]----->element1   #如果索引超过列表范围,程序会报错
	list1[0:1]--->[element0, element1]
列表的常用操作(方法)

11个方法,同样可以用 list. (tab)查看。
方法的具体描述可以用help()

列表方法 说明
list.append(object) 添加对象到列表中
list.cout(value) 计算value在列表中的出现次数
list.insert(index, object) 在index前插入对象,新对象的索引即为index
list.reverse() 翻转列表,这一操作会改变在列表上
list.clear 删除列表中所有元素,这一操作会直接改变列表
list.extend(iterable) 把另一个可迭代变量的元素加入当前列表
list.pop([index]) 弹出并删除列表中在[index]索引下的数据,默认索引为最后一个元素,如果列表为空或索引超出范围,会报错
list.sort() 稳定排序,默认是升序排列,可以修改bool参数reverse改为及降序排列
list.copy 返回一个数据一样的新列表
list.index(value) 返回value出现的第一个Index
list.remove(value) 删除出现的第一个value

补充:
关键字del
使用关键字del可以删除变量,也可以删除列表中指定元素
del关键字会从内存中删除变量,删除后就不能再调用逛钙变凉了

列表的循环遍历

迭代遍历 iteration
顺序地从列表中获取数据,数据保存在item中。

for item in list:
	代码块
应用场景

虽然列表可以存储不同类型的数据,但应用时,更多地是存储相同类型的数据,通过遍历进行重复操作。

元组 Tuple

元组:由多个元素组成的序列,数据之间用,分隔,索引从0开始。
与列表的区别
1)元组的元素不能修改
2)元组用()定义,
3)空元组的定义 a = ()
4) 单元素元组的定义 a = ( element, )

	# 空tuple的定义
	empty_tuple = ()
	# 单元素元组的定义
	one_tuple = (1,)
	# 元组的调用
	a = one_tuple[0]
元组的常用操作(方法)
元组方法 说明
tuple.index(value) 返回value出现的第一个Index
tuple.cout(value) 计算value在元组中的出现次数

len函数同样起作用

元组的循环遍历
for element in tuple_name:
	代码块
应用场景

元组中通常保存的数据类型不同,不适合用循环遍历做重复操作
元组常用于以下三个方面:
1)函数的参数和返回值
2)格式化字符串 %()中的()就是元组
3)让列表的数据不被修改

字典

字典同样可以用于存储多个数据
通常存储用于描述一个物体的信息
和列表的区别:列表是有序的对象集合、字典是无序的对象集合
字典用大括号{}定义
字典用键值对存储数据,键值对时间用逗号,分割

	voc = {key1: value1,
		   key2: value2,
		   key3: value3}
	'''
	键key必须是唯一的,只能是数字、字符串、元组
	值value可以是任何数据类型
	key是索引,value是对应值
	'''
	#字典的取值
	voc[key1]
	#字典键值对的增加
	voc[key4]
	#字典键值对的修改
	voc[key3] = value3
	
字典的常用方法

太多了,没用上的先不写。

字典方法 说明
voc.clear() 删除字典中所有内容
voc.get(k [, d=none]) 返回字典中key=k的value,如果k不在keys中,返回d
voc.pop(k [, d=none]) 弹出并删除字典中key=k的value,如果k不在key中,返回d或报错
voc.update([E, ] **F) 用字典或可迭代序列E和F更新(合并)到voc
voc.copy()
voc.items()
voc.popitem() (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty.
voc.values()
voc.fromkeys()
voc.keys()
voc.setdefault()

len()函数同样可以查看字典的键值对的数量。

字典的循环遍历
for key in diction:
	#变量key是每次循环中获取到的key
	print('diction[key]')
应用场景

字典常与列表一起使用。
字典包含一个物体的多种信息
把字典作为列表的一个元素,则列表保存了多个实例的信息
在列表遍历中可以对每个实例进行处理。

字符串

python中可以用一对单引号或一对双引号定义字符串
因为其他语言中大多用双引号定义,因此应多使用双引号。
字符串内容中如果需要用到双引号,那么在定义字符串时使用单引号。
字符串同样可以用 str[i]取值
同样可以用遍历循环。

字符串的方法

太多了,归纳有以下六类
**is**开头的方法,用于判断字符串特性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通用方法

python内置函数
	len(item)  # 计算容器中的元素个数
	del(item)  # 删除变量
	max(item)  # 返回容器中元素最大值,如果是字典,只针对key比较
	min(item)  # 返回容器中元素最小值 如果是字典,只针对key比较
	cmp(item1, item2)  
	# 比较两个值,-1小于/0相等/1大于, python3.x取消了该函数
切片
iteration[start_index:end_index:step]
'''
	不能对字典进行比较和切片
'''
运算符
	'''
	列表、元组、字符串可以与乘号*运算
	列表、元组、字符串可以用加号+拓展
	'''

在这里插入图片描述

数据类型的相互转换
	# list函数可以把元组转换成list
	list(tuple_name)
	# tuple函数可以把list转换成元组
	tuple(list_name)

常用工具包

先说明对导入的工具包如何查看其帮助说明

	import package
	help(package)
	#查看工具包的说明
	help(package.function)
	#查看工具包中某个函数的说明

random

随机数模块,提供一些随机数接口

random.randint(a,b) #返回[a,b]之间随机整数,包含a、b
random.choice(sequence) #随机返回sequence中的一个值
random.random() #不需要参数 返回一个参数

第一个多文件程序

1.框架搭建

准备文件:①主程序功能代码文件 ②功能函数文件
根据程序功能设计程序框架结构,对具体功能实现可以用pass关键字先占位

2.确定数据结构

3.实现各个功能函数

4.运行程序

linux上的shebang符号 #!
这个符号一般在Unix系统脚本的第一行开头使用,该符号后跟上Python解释器的完整路径(用which python 获得)

#! /usr/bin/python3

然后修改文件权限

结尾

python入门的第一部分内容就写到这里。
这部分内容包括了python简介、python基础和一个多文件程序的设计方法。
由于作者有一些C语言基础,这部分内容省略了一些内容,之后如果有相关的内容会更新到这里。
#------------------------------------------------------------------------------#
2021-5-26:补充了一些函数基础的内容,包括参数传递、参数、匿名函数。
#------------------------------------------------------------------------------#
2021-6-14:python3.10 beta版本中添加了对switch功能的支持,使用match-case语句,增加了这一内容。
#------------------------------------------------------------------------------#
最后更新于2021-6-14

说明:本文内容参考了一些视频和博客,虽然是我自己进行了整理和编辑后的内容,但如果您(原视频或博客作者)认为我的行为侵犯了您的版权,请私信联系我,核实身份后我会删除文章。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python入门(一)·环境配置与python基础 的相关文章

  • Pygame读取MIDI输入

    我参考了Pygame MIDI 文档 https www pygame org docs ref midi html and 这段代码 https stackoverflow com questions 62983509 pygame mi
  • 查找 with: 块中定义的函数

    这是一些代码理查德 琼斯的博客 http www mechanicalcat net richard log Python Something I m working on 3 with gui vertical text gui labe
  • openpyxl 2.4.2:保存后公式生成的单元格值为空

    我使用 openpyxl 打开文件 编辑一些单元格并保存更改 这是一个例子 import openpyxl book openpyxl load workbook sheet path sheet book active for row i
  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • python中函数变量的作用域

    假设我们有两个函数 def ftpConnect ftp FTP server ftp login ftp cwd path def getFileList ftpConnect files ftp nlst print files 如果我
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • Python While 循环,and (&) 运算符不起作用

    我正在努力寻找最大公因数 我写了一个糟糕的 运算密集型 算法 它将较低的值减一 使用 检查它是否均匀地划分了分子和分母 如果是 则退出程序 但是 我的 while 循环没有使用 and 运算符 因此一旦分子可整除 它就会停止 即使它不是正确
  • 在wxpython中使用wx.TextCtrl并在按钮单击后显示数据的简单示例 - wx新手

    我正在学习 python 并尝试使用 wxpython 进行 UI 开发 也没有 UI exp 我已经能够创建一个带有面板 按钮和文本输入框的框架 我希望能够在文本框中输入文本 并让程序在单击按钮后对输入框中的文本执行操作 我可以获得一些关
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • Python模块单元测试的最佳文件结构组织?

    遗憾的是 我发现有太多方法可以在 Python 中保存单元测试 而且它们通常没有很好的文档记录 我正在寻找一种 终极 结构 它可以满足以下大部分要求 be discoverable by test frameworks including
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现

随机推荐

  • Weblogic自动部署与手动部署 异常记录与解决方法

    weblogic在控制台部署项目时提示 The application mycim2Ejb was autodeployed and may only be redeployed by touching REDEPLOY file in t
  • http长连接

    http长连接与短连接 http协议是基于TCP协议的 http长连接即指的是TCP的长连接 TCP协议是一个面向连接 可靠 有着拥塞控制以及流量控制的传输层协议 http长连接问题由来 http是一个无状态的协议 简单点来说 如果同一个浏
  • 生产者―消费者问题算法的实现

    实验目的 掌握进程 线程的概念 熟悉相关的控制语 掌握进程 线程间的同步原理和方法 掌握进程 线程间的互斥原理和方法 掌握使用信号量原语解决进程 线程间互斥和同步方法 实验思路 生产者的主要作用是生成一定量的数据放到缓冲区中 然后重复此过程
  • Android数据加密之Rsa/MD5/Aes/Des加密算法归纳总结

    加密算法 1 加密算法通常分为对称性加密算法和非对称性加密算法 对于对称性加密算法 信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的 之后便是对数据进行 加解密了 非对称算法与之不同 发送双方A B事先均生成一堆密匙 然后A将自己的
  • JS获取日期,浏览器高度

    1 获取当前日期向前推x天或者向后推x天 并已年 月 日 时 分 秒的格式返回值 获取往前后各推x天 function getDateOfDelayOrAdvance delay advance delay 往后推x天 advance 往前
  • ue4 用武器切割物体.

    我们这里使用UE4自带的第三人称的模板开始我们的游戏 切割物体嘛 所以这里我们需要一把武器和人物的武器攻击动画 武器我们可以从官方商城的免费资源获得 人物攻击动画我们可以从下面这个网站获得 这里面有各种人物动画和模型 完全免费 业界良心啊
  • TPshop项目介绍

    熟悉项目的信息来源 组织架构图 作用 整体性的认识被测试的项目 绘制 后台 系统 子系统 模块 子模块 见到具体界面为止 不考虑界面上的模块内容 前台 tpshop购买流程 注册登录 商品展示 购物车 支付 订单管理 前台绘制原则 一个独立
  • osg+shader光照半透明

    先记录下 免得时间久了忘了 对于光照 光源有点光源 聚光灯 方向光 每种光源又有ambient diffuse specular emission几个属性 这里用点光源 不考虑衰减 1 diffuse是入射光与物体法线之间的余弦起作用 2
  • 基础回顾3

    java中有哪些容器 集合类 Collection 接口的接口 对象的集合 单列集合 List 接口 元素按进入先后有序保存 可重复 LinkedList 接口实现类 链表 插入删除 没有同步 线程不安全 ArrayList 接口实现类 数
  • 稳定性建设框架

    一 为什么要做稳定性建设 1 从熵增定律引出稳定性建设的必要性 物理学上 用 熵 来描述一个体系的混乱程度 卡尔 弗里德曼提出熵增定律 他认为在一个封闭的系统内 如果没有外力的作用 一切物质都会从有序状态向无序状态发展 如果我们不希望系统变
  • Unity3D C#数学系列之矩阵基础

    目录 1 引言 2 矩阵的作用 3 矩阵的乘法 3 1 矩阵与标量的乘法 3 2 矩阵与矩阵的乘法 4 特殊矩阵 4 1 方块矩阵 4 1 1 对角矩阵 4 1 2 单位矩阵 4 2 转置矩阵 4 3 逆矩阵 4 4 正交矩阵 4 4 列矩
  • 漫游Kafka之过期数据清理

    Kafka将数据持久化到了硬盘上 允许你配置一定的策略对数据清理 清理的策略有两个 删除和压缩 数据清理的方式 删除 log cleanup policy delete启用删除策略 直接删除 删除后的消息不可恢复 可配置以下两个策略 清理超
  • Linux驱动:应用程序open如何调用到驱动程序的open函数

    字符设备文件的打开流程 相关结构体 流程涉及相关结构体如下 struct inode dev t i rdev const struct file operations i fop former gt i op gt default fil
  • 广义线性模型 matlab,基于Matlab的广义线性模型建模

    万方数据 2 黔东南民族师范高等专科学校学报 2006年12月 数向量 link 必须与gl lfit 中使用的相同 yfit就是预测值 yfit dlow d叫 glmval 6 x liIlI stats clev 返回预测值的置信界
  • 技术小白的渗透测试都是静悄悄的

    无意间发现一个phpstudy2014探针界面 决定尝试一下弱口令 万一可以登录就可以直接写入木马了 目录扫描得到phpmyadmin页面 root root登录成功 进入里面 查看日志是否开启 发现开启 qiexi 查看日志文件保存路径
  • datasource dbcp 数据源_通过 XML 实现 DataSource(数据源)注入

    这里介绍Spring提供的3种通过Xml实现DataSource 数据源 注入的方式 使用Spring 自带的DriverManagerDataSource 使用DBCP连接池和使用Tomcat提供的JNDI 下面分 别来进行介绍 1使用S
  • sh: 1: webpack-dev-server: Permission denied

    npm run dev一个项目时出现了如标题的错误 提示权限错误 我没有安装webpack dev server这个模块 也不知道之前有没有安装webpack 索性一块安装 命令行全局安装webpack webpack dev server
  • App自动化测试

    windows下搭建python appium环境 搭建过程步骤如下 安装jdk并配置好环境变量 jdk版本1 8以上 安装android sdk并配置好环境变量 具体步骤见 Android Studio安装 推荐使用这种方法安装SDK 环
  • 华硕P10S-M主板组装服务器-raid配置方法

    组装服务器磁盘阵列 阵列卡型号 P10S M 打开BIOS界面 选择Advanced 找到SATA Mode Selection选项 选择RAID磁盘阵列选项 保存后重启 开机界面按CTRL I进入磁盘阵列卡配置界面 进入磁盘阵列 进入Cr
  • Python入门(一)·环境配置与python基础

    这篇博客记录我的python入门学习过程 使用阿里云服务器ubuntu 18 04 关于Linux的入门参照上一篇博客 学习使用的视频来自B站 黑马程序员python教程 python简介 它是作者基于C语言编辑的解释器 最大的优点是开源得