python基础知识(四)

(四)处理文件

a、文件的格式主要有txt、html、xml,接下来主要讲的是txt格式的文件处理

对文件进行读写等操作会用到的函数是open(),第一个参数file是指传入你创建的文件名,其中有一个参数是mode,mode的意思是打开文件的模式

例如:在pycharm中先创建一个test.txt,写入内容:hello,welcome to my world~

 file=open("test.txt","r")

 print(file.read())

打印出来的结果是 hello,welcome to my world~

b、模式有以下几种:

r :只读,如果你要写入内容的话就会报错(not readable)

r+(尽量少用):可读可写,如果是先写再读的话,就是从头开始覆盖写,读取光标之后的内容,读写是跟着光标走的;如果是先读再写的话,就是添加在内容的末尾

w(慎重使用):只写,硬要去读的话会报错(not readable)

w+ :可读可写,不管是w还是w+,如果文件存在就直接清空再重写,如果文件不存在那就新建一个文件再写

:追加,可读可写,如果文件存在就直接追加写,如果不存在就会新建一个文件进行结果写入

a+(推荐使用):追加 可读可写

注:file文件open之后默认是r,只读模式;如果要写入中文的话,要注意编码格式,可以用encoding来指定编码格式。

c、以上讲到的内容重点要掌握的是r、a

接下来举例进行说明,例如:先创建一个名为test.txt的文件,写入内容:你好啊,好久不见~

 file=open("test.txt","r",encoding='utf-8')

 print(file.read())

打印出来的结果是 你好啊,好久不见~

注:file.read()是读取所有的内容

      file.readline()是按行进行读取

      file.readlines()是读取多行,返回的是一个列表

 file_2=open("test.txt","a",encoding='utf-8')

 print(file.write("今天天气好好呀"))

打印出来的结果是 你好啊,好久不见~今天天气好好呀

注:file.write()写入内容

      file.writelines()写入多行内容

(五)路径处理

1、os模块

首先我们要知道路径处理会用到os模块,os模块提供了多数操作系统的功能接口函数,当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,这些都会用到os模块;这个模块可以在Lib目录下找到,是一个单独的模块,所以要引用这个模块可以直接用import进行引入:import os,接下来再对os的其他用法进行例举:

(1)创建/删除文件夹/目录/文件

a、新建一个目录/文件夹

os.mkdir("目录/文件夹的名字")

b、跨级新建目录--->用/来代表路径的不同层级,跨级新建必须确保上一层级已经存在,否则新建的时候会报错

os.mkdir("上一层级的目录名/需要新建的目录名")

c、转义字符 \n \r \t

当创建文件夹或者目录的路径当中出现了转义字符,可以再加一个\、r\R来让转义字符失效,如果路径当中不存在转义字符,则路径当中的\、\\、/、//是没有区别的

d、删除目录(也是需要一级一级的来删除,否则会报错)

os.rmdir("需要删除的目录路径")

e、新建文件

open("文件名")

os.open("文件名")

f、删除文件

os.remove("要删除的文件路径")

os.removedirs("要删除的文件路径")--->递归删除

g、目录列表

os.listdir():获取当前路径下面所有的文件和目录,返回的是列表

(2)路径的获取

os.getcwd()--->获取的是当前路径

os.path.realpath(__file__):获取当前文件所在的绝对路径,具体到模块名,如果参数是__file__就说明是本文件所在的绝对路径

os.path.split(路径):拆分路径,这样可以把一个路径拆分成两部分,后一部分总是最后级别的目录或文件名,返回的是元祖格式的数据

os.path.exists():用来检验给出的路径是否存在,判断文件/文件夹是否存在,返回的是布尔值

os.path.dirname(路径):返回文件路径

os.path.basename(路径):返回文件名

os.path.isdir:判断当前文件是否是目录,返回的是布尔值

os.path.isfile:判断当前文件是否是文件,返回的是布尔值

(3)路径的拼接

a、用+进行拼接

例如:

 import os
new_path=os.getcwd()+"\python"
os.mkdir(new_path)

b、os.path.join(a,*n):连接两个部分的路径,组成一个完整的路径

例如:

 import os
new_path=os.path.join(os.getcwd(),"python","subject_1")
os.mkdir(new_path)

join后面的第二个参数是动态参数,可以传入多个地址进行拼接,如果要跨级拼接路径,必须确保上一级的目录是已经存在的,否则会报错

也可以把需要拼接的路径都放在一起,多个路径放在一起就必须要加斜杠或者反斜杠:

 import os
new_path=os.path.join(os.getcwd(),"python\subject_1")
os.mkdir(new_path)

2、相对路径和绝对路径

相对路径:从当前目录开始一级一级往下读

绝对路径:从根目录开始一级一级往下读

拓展:给定一个路径,请打印出所有的路径(直到这个路径下没有目录为止) 思路:递归函数

 import  os
for path in os.listdir(os.getcwd()) :
if os.path.isdir(path):
os.listdir(os.path.join(os.getcwd(),path))
print("{0}还需要进一步处理".format(path))
else:
print("该路径已经穷尽了",os.path.join(os.getcwd(),path))

3、异常处理

a、 异常:你在运行代码的过程中遇到的任何错误,带有error字样的都是异常

异常处理:我们对代码中所有可能会出现的异常进行的处理

初级异常处理:主要处理的是某个错误,某种类型的错误或者是只要有错误就进行抓取

进一步的异常处理:不仅对错误进行抓取,而且会采取措施

b、标准异常

BaseException  所有异常的基类

SystemExit  解释器请求退出

KeyboardInterrupt   用户中断执行

Exception  常规错误的基类

StopIteration  迭代器没有更多的值

GeneratorExit  生成器发生异常来通知退出

StandardError  所有数值计算错误的基类

FloatingPointError  浮点计算错误

OverflowError  数值计算超出最大限制

ZeroDivisionError  除零

AssrttionError  断言语句失败

AttributeError  对象没有这个属性

EOFError  没有内建输入,到达EFO标记

EnvrionmentError 操作系统错误的基类

IOError  输入/输出操作失败

OSError  操作系统错误

WindowsError  系统调用失败

ImportError  导入模块/对象失败

LookupError  无效数据查询的基类

IndexError  序列中没有此索引

等等等等等等

c、语法

try......except  Exception as e......

try......except....finally..... finally的作用:不管有没有犯错都会执行

try.....except.....else....(不常用)跟try下面的代码是一起的,如果try下面的代码没有犯错,else就会执行,反之则不会执行。

例如:

 import os
try: # 警察
os.mkdir ("Alisa") # 嫌疑人
except Exception as e: # 警力出动 把错误抓起来 存到变量e里面去
print ("抓到你了")
print("你犯的错是{0}".format(e))
file=open("error.txt","a+",encoding="utf-8")
file.write(str(e))
file.close()#关闭文件
print ("啦啦啦啦")

打印出来的结果是:啦啦啦啦

例如:

 import os
try:
os.rmdir("Alisa/vict")
except Exception as e:
print("你犯的错是{0}".format(e))
file=open("error.txt","a+",encoding='utf-8')
file.write(str(e))
file.close()
finally:
print("我还是会执行的呀呀呀呀呀")

打印出来的结果是:我还是会执行的呀呀呀呀呀

再例如:

 import os
try:
os.rmdir("Alisa/vict")
except Exception as e:
print("你犯的错是{0}".format(e))
file=open("error.txt","a+",encoding='utf-8')
file.write(str(e))
file.close()
else:
print("我还是会执行的呀呀呀呀呀")

打印出来的结果是:我还是会执行的呀呀呀呀呀

以上,第四部分到此结束~

Python-接口自动化(四)的更多相关文章

  1. python接口自动化四(json数据处理)

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  2. python接口自动化(十)--post请求四种传送正文方式(详解)

    简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...

  3. python接口自动化-Cookie_绕过验证码登录

    前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...

  4. python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  5. python接口自动化 -参数关联(一)

    原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...

  6. python接口自动化6-重定向(Location)

    前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...

  7. python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  8. python接口自动化4-绕过验证码登录(cookie)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

  9. python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? (敲黑板!!!由于博客园最近登录机制变了,登录全部走cookie登录) 一.sessi ...

  10. python接口自动化1-发送get请求

    前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来就是学习它了. 一.环境安装 1.用pip安装requests模块 >>pip in ...

随机推荐

  1. ojdbc包加入本地仓库

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar - ...

  2. Java 问题定位工具 ——jstack

    简介 jstack 主要用于生成虚拟机当前时刻的「线程快照」.线程快照是当前 Java 虚拟机每一条线程正在执行的方法堆栈的集合. 生成线程快照的主要目的是用于定位线程出现长时间停顿的原因,如线程间死 ...

  3. CF932G Palindrome Partition

    思路 首先把字符串变为\(S[1]S[n]s[2]s[n-1] \dots\) 这样原来的一个合法的划分方案就变成了用k个长度为偶数的回文子串划分的方案, 然后直接DP,对i位置,可转移的位置就是它的 ...

  4. flask-login模块

    flask-login为flask提供了用户会话管理.他处理了日常的登入,登出并且长时间记住用户的会话. 1.在会话中存储当前活跃的用户ID,让你能够自由地登入和登出. 2.让你限制登入或登出用户可以 ...

  5. Python装饰器的另类用法

    之前有比较系统介绍过Python的装饰器(请查阅<详解Python装饰器>),本文算是一个补充.今天我们一起探讨一下装饰器的另类用法. 语法回顾 开始之前我们再将Python装饰器的语法回 ...

  6. 题解 CF934A 【A Compatible Pair】 ——贪心

    题意: 给定两个数列 \(A\) . \(B\) ,元素个数分别为 \(n\) , \(m\) \((2 \le n,m \le 50)\) .数列中所有元素大小均在 \(-10^{9}\) 到 \( ...

  7. ssh 框架整合事,使用注解,action提示找不到

    There is no Action mapped for namespace [/] and action name [/select] associated with context path [ ...

  8. 在CentOS6.9上Shell脚本定时释放内存cache

    一.写Shell脚本 mkdir -p /var/script/ vim /var/script/freemem.sh 写入以下Shell脚本: #!/bin/bash # 当前已使用的内存大小 us ...

  9. sudo命令

    su命令 switch user的缩写, 意为切换至指定用户执行命令 常用选项 -c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份: -f或——f ...

  10. Redis 知识整理

    1. 什么是Redis Redis是开源的.基于内存的键值对数据库. 2. Redis 的基本操作 set key value => mset, setbit, hset get key =&g ...