Python基础知识:文件和异常
1、相对路径:如果文件和程序在同一文件夹内,可不用路径;如果文件在程序所在文件夹下一级文件夹中,只需添加下一级文件夹名称即可;
在Linux和OS系统中:文件路径中使用斜杠(/)
在Windows系统中:文件路径使用反斜杠(\)
通过使用绝对路径,可读取任何地方的文件,但最简单的方法是,要么将文件存储在程序所在的目录,要么存储在程序文件所在目录的下一级文件夹中。
with open() as 通过使用这个方法打开文件,不需要你手动关闭文件,Python会在合适的机会关闭它。
#open(),read()打开文本文件,并读取内容
with open('text_file\word.txt') as file_object:
contents = file_object.read()
print(str(1)+'.'+contents)
#打开文件,逐行读取
with open('text_file\word.txt') as file_object:
print(str(2)+'.')
for line in file_object:
print(line.rstrip())
2、readlines()在with代码块中将文件内容存储在一个列表中,再在with代码块外打印它
#readlines()函数
with open('text_file\word.txt') as file_object:
lines = file_object.readlines()
print(str(3)+'.')
for line in lines:
print(line.rstrip())
3、统计文件的行数
#每行以下标加行的形式显示
with open('text_file\word.txt','r') as f_obj:
lines = f_obj.readlines()
count = len(lines)
print(count)
4、转义字符:绝对路径,将长路径存放到变量中,\u\t\n等均为转义字符,需要在路径前加r,不做转义处理
file_path = r'C:\Users\Administrator\Desktop\Pycharm_Projects\pycharm\text_file\word.txt'
with open(file_path) as file_object:
contents = file_object.read()
print(str(4)+'.'+contents)
5、打开文件是,我们可以指定只读模式('r'),写入模式('w'),附加模式('a'),读取和写入模式('r+'),默认以只读模式打开文件。
如果写入文件不存在,函数open()将自动创建它;
如果写入模式打开文件,指定的文件已经存在,将在返回文件对象前清空该文件,再重新写入;
如果以附加模式打开文件,内容会自动添加到文件末尾。
注意:Python只能将字符串写入文本文件,要将数值存储到文本文件中,必须先使用str()函数将其转换为字符串格式。
#以附加模式写入内容write()
while True:
user_name = input('Enter your name:')
if user_name == 'q':
break
else:
filename = 'text_file\guests.txt'
with open(filename,'a') as file_object:
file_object.write(user_name + '\n')
print('Welcome to the white house!')
with open('text_file\guests_book.txt','a') as file_object2:
file_object2.write('%s has been to the white house!\n'%user_name)
6、基本异常处理
- Python使用被称为“异常”的特殊对象来管理程序运行期间发生的错误,每当发生错误时,它都会创建一个异常对象,如果你编写了处理该异常的代码,程序将继续运行,如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。
- 最基本的异常处理:出现异常时,输出错误信息,程序不中断;Exception可以接收任何错误类型,也可以改成具体的错误类型,如FileNotFoundError。
while True:
num1 = input('输入数字:')
try:
num1 = int(num1)
ret = num1 + 1
except Exception as ex:
#ex为Exception的实例
print(ex)
#invalid literal for int() with base 10: 's'
- try-except-else 将可能出现异常的代码放到try下来执行,如果出现异常,执行except下的语句,没有错误的放到else。
#ZeroDivisionError:处理整数不能除以0的异常
print('please input two numbers.')
print("enter 'q' to quit.")
while True:
first_number = input("First number:")
if first_number == 'q':
break
second_number = input('Second number:')
if second_number == 'q':
break
try:
answer = int(int(first_number)/int(second_number))
except ZeroDivisionError:
print('You cannot divide by 0!')
else:
print(answer)
7、处理FileNotFoundError找不到文件异常
def read_file(filename):
try:
with open(filename) as f_obj:
contents = f_obj.read()
print(contents.split(','))
except FileNotFoundError:
msg = "The file %s doesn't exist!"%filename
print(msg)
filename = 'text_file\cats.txt'
read_file(filename)
filename = 'alice.txt'
read_file(filename)
8、ValueError数值异常
first_number = input("First number:")
second_number = input('Second number:')
try:
num = int(first_number) + int(second_number)
except ValueError:
print('wrong data type!')
else:
print(num)
9、pass--定位符,直接跳过,不执行任何程序
def read_file(filename):
try:
with open(filename) as f_obj:
contents = f_obj.read()
print(contents.split(','))
except FileNotFoundError:
pass
filename = 'alice.txt'#没有此文件,遇到异常,直接跳过
read_file(filename)
filename = 'text_file\cats.txt'
read_file(filename)
10、重构:将代码划分为一系列完成具体工作的函数,这个过程被称为重构。
#重构greet_user(),分成三个函数
import json
def get_new_username():
'''提示用户输入用户名'''
filename = r'json_file\user_name.json'
username = input('enter your name:')
with open(filename,'w') as f_obj:
json.dump(username,f_obj)
return username
def get_stored_username():
'''获取已经存储的用户名'''
filename = r'json_file\user_name.json'
try:
with open(filename,'r') as f_obj:
username = json.load(f_obj)
except FileNotFoundError:
return None
else:
return username
def greet_user():
'''欢迎用户,并指出其名字'''
username = get_stored_username()
print(username)
if username:#如果函数返回的是用户名,就执行
judge_flag = input('Is the username right?(y/n):')#询问用户名是否正确
if judge_flag == 'y':
print('Welcome back,%s' % username)
else:#如果不正确,提示用户输入用户名,并存储
username = get_new_username()
print("We'll remember you when you come back,%s."%username)
else:#如果函数返回的是空,就提示用户输入用户名
username = get_new_username()
print("We'll remember you when you come back,%s." % username)
greet_user()#运行函数
11、常用异常种类
AttributeError #试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError #输入/输出异常;基本上是无法打开文件
ImportError #无法引入模块或包;基本上是路径问题或名称错误
IndentationError #语法错误(的子类) ;代码没有正确对齐
IndexError #下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError #试图访问字典里不存在的键
KeyboardInterrupt #Ctrl+C被按下
NameError #使用一个还未被赋予对象的变量
SyntaxError #Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError #传入对象类型与要求的不符合
UnboundLocalError #试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError #传入一个调用者不期望的值,即使值的类型是正确的
12、异常处理完整的代码块
try:
#所有的逻辑代码
pass
except ValueError as ex:
#接收值错误类型的报错
print(ex)
except Exception as ex:
#接收任何错误类型的报错
print(ex)
else:
#没有报错时执行
pass
finally:
#无论是否报错,都执行
pass
13、主动触发异常错误
try:
raise Exception('主动错误')#self.message = '主动错误'
print(123) #不会执行
except Exception as ex:
print(ex) #Exception中有__str__,return self.message
finally:
#无论是否报错,都执行
print(123)#执行
Python基础知识:文件和异常的更多相关文章
- 1.14 Python基础知识 - 文件操作
应用程序往往需要从磁盘文件中读取数据,或者把数据存储到磁盘中文件里,以持久的保存数据.文件可以看作是数据的集合,文件的输入与输出通过流来实现.流有5种基本的操作:打开.读取.写入.改变当前位置和关闭. ...
- python 基础知识(一)
python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
- 七. Python基础(7)--文件的读写
七. Python基础(7)--文件的读写 1 ● 文件读取的知识补充 f = open('file', encoding = 'utf-8') content1 = f.read() content ...
- Python基础知识详解 从入门到精通(七)类与对象
本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- 第二篇:python基础之文件读写
python基础之文件读写 python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使 ...
- Python基础知识(Basic knowledge)
Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...
- Python 基础知识(一)
1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...
- python基础知识部分练习大全
python基础知识部分练习大全 1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py #必须在首行 ...
随机推荐
- Xpath定位方法深入探讨及元素定位失败常见情况
一.Xpath定位方法深入探讨 (1)常用的Xpath定位方法及其特点 使用绝对路径定位元素. 例如: driver.findElement(By.xpath("/html/body/div ...
- 从零开始学 Web 之 jQuery(七)事件冒泡,事件参数对象,链式编程原理
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 高可用Hadoop平台-HBase集群搭建
1.概述 今天补充一篇HBase集群的搭建,这个是高可用系列遗漏的一篇博客,今天抽时间补上,今天给大家介绍的主要内容目录如下所示: 基础软件的准备 HBase介绍 HBase集群搭建 单点问题验证 截 ...
- iframe可通过postMessage解决跨域、跨窗口消息传递
https://www.cnblogs.com/dorothyorsusie/p/6178599.html //iframe传参给父级页面 function give_info(){ console. ...
- Oracle添加定时任务
1.创建存储过程 注:执行语句后,如果需要请添加commit 2.添加定时job,执行存储过程 declare job_delete number; begin dbms_job.submit( jo ...
- [Luogu1365] WJMZBMR打osu! / Easy
Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 \(n\) 次点击要做,成功了就是o,失败了就是x,分数是按com ...
- HAPRoxy(一):HAProxy基本配置、调度算法与tcp、http、heath模式配置示例
一.HAProxy安装 1.HAProxy简单介绍 HAProxy虽然名字前有HA,但它并不是一款高可用软件,而是一款用于实现负载均衡的软件,可实现四层与七层的负载均衡. 2.yum安装HAProxy ...
- 解决默写浏览器中点击input输入框时,placeholder的值不消失的方法
html中,placeholder作为input的一个属性,起到了在输入框中占位并提示的作用. 但是有一些浏览器,如chrome,当鼠标点击输入框时,placeholder的值不消失,只有输入数据才消 ...
- Centos7重置Mysql 8.0.1 root 密码
问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码:找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc ...
- T-SQL :TOP和OFFSET-FETCH筛选 (五)
通过were和having条件可以对数据进行筛选,那么如何通过排序对数据进行筛选呢? 1.TOP筛选 用于限制查询返回行数或者行数的百分比. 例如 我们对订单表筛选最近产生的订单5条 ) orderi ...