全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python中遇到的小问题及解决方法汇总

本文会把学习过程中遇到的一些小问题和解决办法放在这里,以便于大家能够更好地学习python。

一、Python的异常处理

因为想到自己不断尝试写小程序的话会用到抛出异常信息来判断哪里出现了问题:

usage: raise [Exception [, args [, trackback]]]

上面是Python的raise的用法,下面是自己用这个方法实现异常的抛出方法:

def check_args(args):
 if not args.host:
 msg = 'Args missing! One of the following args should be specified \n' \
  '--host 192.168.1.1 \n' \
  '-f TargetFile \n'
 raise Exception(msg)

#参考别人的代码模式,我这样写来抛出异常.

二、list转str

这个问题是因为自己的无知吧:

命令行传入的host(即ip地址)是list形式,想要通过list转为str的格式之后来进行socket.connect() , 报错:

自己想象的姿势:

client.connect((str(args.host), args.p))

正确的姿势:

client.connect((''.join(args.host), args.p))

上图证明自己的愚蠢(可能下次还会犯同样的错):

三、argparse函数

出发的动机是因为自己写的小程序要通过命令行的形式传参并执行命令.

用自己的简单小实例来显示函数的具体用法吧:

def parse_args():
 parser = argparse.ArgumentParser(prog = 'hello',
     formatter_class = argparse.RawTextHelpFormatter,
     description = '* A tiny toy for fun *\n'
     'By ST(www.********)',
     usage = 'hellPLC.py [options]')
 parser.add_argument('-host', metavar = 'HOST [HOST2 HOST3 ...]', type = str,
   default = '', nargs = '*',
   help = 'Scan the host form command line')

代码很简单,一看就懂大概函数是什么样子,重点是add_argument的参数,当你传入的cmd参数是这种方式的话:

我们可以看到,需要在-p之后跟一个int型的参数才可以,还有另外一种形式.

parser.add_argument('-p', metavar = 'PORT', type = int,
   default = '')

这种方式不需要跟参数,只需要类似于"python -h"这种形式就可以执行并得到想要的结果:

这里就需要对这个函数的各个参数的功能有个基本的了解,这样才能用起来舒服.

 parser.add_argument('-b', default= False, dest='b', action='store_true',
    help = 'Get the base info')

下图就是我们可以跟的参数,自己的问题就是区分清楚action和dest这两个参数,还有default,type等.

四、正则匹配

这个东西有点高深了,最初的想法是使用正则来转变接收到的数据的格式,问过达哥之后原本recv到的数据在encode之后的类型是"str",之前自己的想法是把数据转成list格式,之后提取之类的方便,但"str"类型也可以直接利用偏移来进行分析也可以,直接用"str[]"就可以搞定,因为这个过程中不需要可视化的打印出来,需要打印的是分析之后的结果,所以正则先用不到。

不过还是要把觉得不错的链接放一下:

Python入门篇之正则表达式

https://www./article/56436.htm

Python 匹配任意字符(包括换行符)的正则表达式写法

https://www./article/20654.htm

五、格式化字符串

 temp = '123456'
 print("word:%s" %temp)
 
 output: word:123456

很简单就可以搞定,但是当时想要返回取多个返回值,一下子蒙住不知道怎么搞了,呵呵了~

 f.write ("Block Type: %s \n"
  "Block count: %s \n"
  %(block_type, block_count))
  return block_type, block_count

六、文件读写操作

这个问题别人的博客写的很好很详细了

f = open(r'C:\Movie\test2.txt','w')

直接打开一个文件,如果文件不存在则创建文件,只能只用写命令

f = open(r'C:\Movie\test2.txt')

打开一个文件,只能只用读命令

f.read([size])

size为读取的长度,以byte为单位,如果不写则读取全部内容

f.readline([size])

读一行,如果定义了size,有可能返回的只是一行的一部分。每读取一次,文件操作符向下移动一行。

f.readlines([size])

把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。

关于open模式,参数不同达到的效果也是不同的,比如我需要的是在一个日志文件中不断的追加新的东西而不是每次都直接覆盖掉,所以我用到了"a+"

关于open模式的参数:

  1. w     以写方式打开
  2. a     以追加模式打开
  3. r+     以读写模式打开
  4. w+     以读写模式打开
  5. a+     以读写模式打开 (我用到了这个模式,读写模式不断追加新的东西)
  6. rb     以二进制读模式打开
  7. wb     以二进制写模式打开
  8. ab     以二进制追加模式打开
  9. rb+    以二进制读写模式打开11 wb+    以二进制读写模式打开12 ab+    以二进制读写模式打开

还有一些操作的区别,我当时用到的问题是f.readline,每次都是读文件的一行,没有把全部的内容都读出来,所以区别还是很明显,要区分清楚.

写操作的用法和区别:

f.write(“str”)

把str写到文件中,write()方法不会在str后加上一个换行符

f.writelines(seq)

把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

f.close()

关闭文件。在读命令或者写命令结束时,需要用关闭。如果文件关闭后依然操作,会抛出ValueError: I/O operation on closed file

f.tell()

返回文件操作标记的当前位置,以文件的开头为起点

fp.next()

返回下一行内容,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。

fp.seek(offset[,whence])

将文件操作标记为移动到offset位置。

七、遇到的报错情况

自己不想要定义太多的函数,个人感觉是想要将不同功能的函数进行分类,因此我尝试用到了类,知道自己这么做可能是想法上就有些不对的,但是想要瞎试试看看效果,所以结果就是报错了.

如图,这是别人遇到的方法,和我的是一样的,我没有定义静态的函数,所以每次使用之前都需要进行实例化才能调用.

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# python  # 编码问题  # python3编码问题  # 面试问题  # 解决PyCharm 中写 Turtle代码没提示以及标黄的问题  # 新手常见Python错误及异常解决处理方案  # 解决Python一行输出不显示的问题  # python代码有一行标黄问题的解决方案  # 自己的  # 抛出  # 的是  # 是因为  # 就可以  # 会在  # 这个问题  # 我用  # 很简单  # 写到  # 报错  # 来实现  # 命令行  # 过程中  # 都是  # 这是  # 很好  # 放在  # 太多  # 有个 


相关文章: 如何通过智能用户系统一键生成高效建站方案?  完全自定义免费建站平台:主题模板在线生成一站式服务  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  上海网站制作开发公司,上海买房比较好的网站有哪些?  建站主机解析:虚拟主机配置与服务器选择指南  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  Android滚轮选择时间控件使用详解  如何零基础在云服务器搭建WordPress站点?  5种Android数据存储方式汇总  宝塔建站教程:一键部署配置流程与SEO优化实战指南  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  建站之星如何保障用户数据免受黑客入侵?  如何在腾讯云服务器快速搭建个人网站?  建站之星后台管理如何实现高效配置?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  个人摄影网站制作流程,摄影爱好者都去什么网站?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在IIS7中新建站点?详细步骤解析  视频网站app制作软件,有什么好的视频聊天网站或者软件?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何用VPS主机快速搭建个人网站?  济南企业网站制作公司,济南社保单位网上缴费步骤?  建站之星安装需要哪些步骤及注意事项?  建站主机CVM配置优化、SEO策略与性能提升指南  Android自定义listview布局实现上拉加载下拉刷新功能  如何撰写建站申请书?关键要点有哪些?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  如何零基础开发自助建站系统?完整教程解析  如何快速完成中国万网建站详细流程?  如何选择高效响应式自助建站源码系统?  网站按钮制作软件,如何实现网页中按钮的自动点击?  如何生成腾讯云建站专用兑换码?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  网站制作话术技巧,网站推广做的好怎么话术?  seo网站制作优化,网站SEO优化步骤有哪些?  如何在企业微信快速生成手机电脑官网?  制作网站怎么制作,*游戏网站怎么搭建?  网站制作公司排行榜,四大门户网站排名?  如何用虚拟主机快速搭建网站?详细步骤解析  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  网页设计网站制作软件,microsoft office哪个可以创建网页?  孙琪峥织梦建站教程如何优化数据库安全?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  香港网站服务器数量如何影响SEO优化效果?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  建站之星安装模板失败:服务器环境不兼容? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。