一、文件读取
二、文件写入
三、异常
四、存储数据

---------------------------------------分割线:正文--------------------------------------------------------

一、文件读取

1、with语句

#采用idea的sources root的相对路径
with open('..//data//pi_digits.txt') as file_object:
contents = file_object.read()
#打印同时剔除空行
print(contents.rstrip())

查看结果:

3.1415926535
8979323846
2643383279

2、绝对路径

file_path='D:/Users/Mr.White/PycharmProjects/pythonProject/data/pi_digits.txt'
with open(file_path) as file_object:
contents = file_object.read()
print(contents.rstrip())

查看结果:

3.1415926535
8979323846
2643383279

3、for循环逐行读取

with open('../data/pi_digits.txt') as file_object:
for line in file_object:
print(line.rstrip())

查看结果:

3.1415926535
8979323846
2643383279

4、readline()方法,将文件的内容存储在列表内

with open('../data/pi_digits.txt') as file_object:
lines=file_object.readlines()
for line in lines:
print(line.rstrip())

查看结果:

3.1415926535
8979323846
2643383279

优化代码,拼接字符串读取

with open('../data/pi_digits.txt') as file_object:
lines=file_object.readlines()
pi_string=''
for line in lines:
pi_string+=line.strip()
print(pi_string)
print(len(pi_string))

查看结果:

3.141592653589793238462643383279
32

二、文件写入

1、with,覆盖模式

file_name='../data/programming.txt'
with open(file_name,'w') as file_object:
file_object.write("I love programming.")

查看文件(../data/programming.txt):

I love programming.

2、写入多行

file_name='../data/programming.txt'
with open(file_name,'w') as file_object:
file_object.write("I love programming.\n")
file_object.write("i love creating new games.\n")

查看文件(../data/programming.txt):

I love programming.
i love creating new games.

3、with,附加模式

with open(file_name,'a') as file_object:
file_object.write("I also love fing...\n")
file_object.write("i love creating apps that...\n")

查看文件(../data/programming.txt):

I love programming.
i love creating new games.
I also love fing...
i love creating apps that...

三、异常

1、解决异常(ZeroDivisionError):try except

try:
print(5/0)
except ZeroDivisionError:
print("You can't divide by zero!")

查看结果:

You can't divide by zero!

2、解决异常(FileNotFoundError):try except

filename="testfile.txt"
try:
with open(filename,encoding='utf-8') as f:
contents=f.read()
except FileNotFoundError:
print(f"sorry,the file {filename} does not exits.")

查看结果:

sorry,the file testfile.txt does not exits.

3、异常时静默处理:pass

try:
print(5/0)
except ZeroDivisionError:
pass

无显示结果

四、存储数据

1、写入数据

import json
number=[2,3,5,7,11,13]
filename='../data/number.json'
with open(filename,'w') as f:
json.dump(number,f)

查看结果(number.json)

[2, 3, 5, 7, 11, 13]

2、读取数据

filename='../data/number.json'
with open(filename) as f:
numbers=json.load(f)
print(numbers)

查看结果:

[2, 3, 5, 7, 11, 13]

3、json+input:保存和读取用户输入

username=input("What is your name?")
filename='username.json'
with open(filename,'w') as f:
json.dump(username,f)
print(f"We'll remember you when you come back,{username}!")
with open(filename) as f:
username=json.load(f)
print(f"Welcom back,{username}")

查看结果:

What is your name?mike
We'll remember you when you come back,mike!
Welcom back,mike

4、封装用户输入与存储

def get_stored_username():
"""当没有错误时读取保存的用户名"""
filename='username.json'
try:
with open(filename) as f:
username=json.load(f)
except FileNotFoundError:
return None
else:
return username def get_new_username():
"""验证新用户名"""
username=input("What is your name?")
filename='username.json'
with open(filename,'w') as f:
json.dump(username,f)
return username def greet_user():
"""greet the user by name"""
username=get_stored_username()
if username:
print(f"Welcome back,{username}!")
else:
username=get_new_username()
print(f"We will remember you when you come back,{username}!") greet_user()

查看运行结果:

Welcome back,mike!

python进阶(7)--文件与异常的更多相关文章

  1. Head First Python之3文件与异常

    文件基本操作 Python从文本读取数据时,一次会到达一个数据行. sketch.txt文件 Man: Is this the right room for an argument? Other Ma ...

  2. python学习二(文件与异常)

    Python中使用open BIF与文件交互,与for语句结合使用,一次读取一行 读取文件sketch.txt,文件内容如下: Man: Ah! (taking out his wallet and ...

  3. Python的文件及异常

    1. Python的文件及异常 1.1 文件操作 1.1.1 从文件中读取数据 许多情况下,我们的信息是存储在文本中的.例如对用户行为的分析,用户访问系统或者网站的访问信息会被存储于文本中,然后对文本 ...

  4. python入门学习:9.文件和异常

    python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件  首先创建一个pi_ ...

  5. [Python 从入门到放弃] 6. 文件与异常(二)

    本章所用test.txt文件可以在( [Python 从入门到放弃] 6. 文件与异常(一))找到并自行创建 现在有个需求,对test.txt中的文本内容进行修改: (1)将期间的‘:’改为‘ sai ...

  6. Python模块、包、异常、文件(案例)

    Python模块.包.异常.文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, ...

  7. Python获得文件时间戳 异常访问监控 邮件定时提醒

    Python获得文件时间戳  异常访问监控 邮件定时提醒

  8. Python之文件和异常IO

    文件和异常 读写文本文件 读取文本文件时,需要在使用open函数时指定好带路径的文件名(可以使用相对路径或绝对路径)并将文件模式设置为'r'(如果不指定,默认值也是'r'),然后通过encoding参 ...

  9. Python进阶【第七篇】文件处理

    一.文件操作 在Python中,文件读写是最常见的操作.对文件的操作为: #1. 打开文件,得到文件句柄并赋值给一个变量 f=open('a.txt','r',encoding='utf-8') #默 ...

随机推荐

  1. 19_MySQL表的内连接

    本节所涉及的SQL语句: -- 表连接查询 -- 查询每名员工(员工名字,编号)的部门信息(部门编号,部门名称) SELECT e.empno,e.ename,d.dname FROM t_emp e ...

  2. 【Notes_3】现代图形学入门——基础变换、MVP变换模型

    基础变换(二维) 三维变化与二维变换矩阵类似 齐次坐标下的基础变换 Scale: \[S(s_x,s_y) =\begin{pmatrix} s_x &0 &0\\ 0 & s ...

  3. 搭建Elasticsearch可视化界面 Kibana

    前言 每一个版本的es都有一个对应的Kibana版本,建议和es相同版本,官网地址: 点击进入下载地址 步骤 1.解压 tar -zxvf kibana-7.2.0-linux-x86_64 2.修改 ...

  4. java 阿里云短信发送

    记录自己的足迹,学习的路很长,一直在走着呢~ 第一步登录阿里云的控制台,找到此处: 点击之后就到此页面,如果发现账号有异常或者泄露什么,可以禁用或者删除  AccessKey: 此处方便测试,所以就新 ...

  5. Spring IoC - 循环依赖

    Spring 复习 3.循环依赖 3.1 定义 循环依赖指多个对象的创建过程中均需要注入对方对象,如下所示 class A{ B b; public A(){ } public A(B b){ thi ...

  6. AOP +FreeSql 跨方法异步事务

    AOP +FreeSql 跨方法异步事务 Autofac.Extensions.DependencyInjection Autofac.Extras.DynamicProxy Castle.Core. ...

  7. Win网络安全审计

    目录 Win进程通信 netstat -nb TCPView 审计登陆历史 security日志 WinLogOnView Win进程通信 netstat -nb 用这个命令就能看到进程和外部的IP连 ...

  8. HoloWAN在连接路由器时应该选择WAN口还是LAN口,有什么区别?

    HoloWAN在连接路由器时应该选择WAN口还是LAN口,有什么区别? 在解决问题前,需要连接到,路由器的WAN口和LAN口的作用不同. WAN口是对外的接口,连接广域网.当联网设备和路由器都开启了D ...

  9. HDOJ-1024(动态规划+滚动数组)

    Max Sum Plus Plus HDOJ-1024 动态转移方程:dp[i][j]=max(dp[i][j-1]+a[j],max(dp[i-1][k])+a[j]) (0<k<j) ...

  10. 无限可能 | Flutter 2 重点更新一览

    我们非常高兴在本周发布了 Flutter 2.自 Flutter 1.0 发布至今已有两年多的时间,在如此短暂的时间内,我们解决了 24,541 个 issue,合并了来自 765 个贡献者的 17, ...