读写、创建文件

文件的分类:
文本文件:基于字符编码,存储的是普通字符串,不包括字体、字号、样式、颜色等信息,可通过文本编辑器显示和编辑,例如txt文件;
二进制文件:基于值编码的,以字节形式存储,其编码长度根据值的大小长度可变。通常在文件的头部相关属性中定义表示值的编码长度。例如视频、音频等。#文件路径操作
path=os.getcwd()    #获取当前脚本的工作路径
os.path.split()   返回一个路径的目录名和文件名
os.path.isdir()   检验给出的路径是否是一个目录
#创建文件
os.mknod(“test.txt”) 创建空文件
fp = open(“test.txt”,w) 直接打开一个文件,如果文件不存在则创建文件#打开文件open()函数
file参数:用于指定文件路径,如果只有文件名,则表示在当前文件夹下。以d:\test.txt(D盘下test.txt文件)为例,文件路径中包含特殊字符“\”,为了避免歧义,通常写为r'd:\test.txt';
mode参数:python中文件打开的模式主要涉及到以下字符:w 以写方式打开。
例如
file_object = open(‘thefile.txt’)
try:
all_the_text = file_object.read( )  #用try捕获异常,若操作异常则对文件关闭,打开和关闭操作要成对出现。
finally:
file_object.close( )  #读取文本文件和二进制文件
file_object = open('data','r')   #第二个参数默认为r
file_object = open('data', 'rb')
output = input.read()     #output是读出来的内容
list_of_all_the_lines = file_object.readlines( ) #读一行#写数据
file_object = open('test.txt', 'w')
file_object.write(all_the_text)
file_object.close( )a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )“r+”打开文件时,不会删除原有文件内容,写入时,如果原有位置有内容,则进行覆盖;而“w+”打开文件时,会先删除原有文件内容。

例如将文件夹中图片的名字改变

import re
import os
import time
#str.split(string)分割字符串
#'连接符'.join(list) 将列表组成字符串
def change_name(path):global iif not os.path.isdir(path) and not os.path.isfile(path):return Falseif os.path.isfile(path):file_path = os.path.split(path) #分割出目录与文件lists = file_path[1].split('.') #分割出文件与文件扩展名file_ext = lists[-1] #取出后缀名(列表切片操作)img_ext = ['bmp','jpeg','gif','psd','png','jpg']if file_ext in img_ext:os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)i+=1 #注意这里的i是一个陷阱#或者#img_ext = 'bmp|jpeg|gif|psd|png|jpg'#if file_ext in img_ext:#    print('ok---'+file_ext)elif os.path.isdir(path):for x in os.listdir(path):change_name(os.path.join(path,x)) #os.path.join()在路径处理上很有用img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('程序运行耗时:%0.2f'%(c))
print('总共处理了 %s 张图片'%(i))输出结果:程序运行耗时:0.11
总共处理了 109 张图片

读写json、csv文件

#csv读
import pandas as pd                         #导入pandas包
data = pd.read_csv("paper_author.csv")      #读取csv文件
print(data)                                #打印所有文件
print (data.head(5))                       #打印前5行print(data.columns)                        #返回全部列名
print(data.shape)                           #f返回csv文件形状
print(data.loc[1:2])                        #打印第1到2行
data.loc[2:4, ['PassengerId', 'Sex']]       #打印行中特定列#CSV写
import csv                     #需要导入csv文件
csvFile = open("csvData.csv", "wb")            #创建csv文件
writer = csv.writer(csvFile)                  #创建写的对象
#先写入columns_name
writer.writerow(["index","a_name","b_name"])     #写入列的名称
#写入多行用writerows                                #写入多行
writer.writerows([[1,a,b],[2,c,d],[3,d,e]])
csvFile.close()例如
import csv
# 需要输出的数据组
a=[['8_1', [0.0, 4.2]],['6_2', [0.0, 4.4]],['7_3', [0.0, 3.85]],['9_4', [4.2, 8.7]],['1_5', [4.4, 8.98]]]#需要成立的表头
head = ['工人工号', '所在工位', '效率', '用时', '生产线平衡率']#与表头对应的数据
row = [{'工人工号':a[i][0][0],'所在工位': a[i][0][-1], '效率':0.3, '用时':a[i][1][-1] - a[i][1][0],'生产线平衡率':'{:.2%}'.format(0.933)} for i in range(len(a))]
#写入内容
with open('D:/file.csv', 'w', newline= '') as w :w_csv = csv.DictWriter(w,head)  #方法改变w_csv.writeheader()  #方法改变w_csv.writerows(row)JSON有三种格式,每一种写法都和JS中的数据类型很像,可以很轻松的和JS中的数据类型互相转换
1.简单值的形式:JSON的简单值的格式对应着JS中的基础数据类型:数字 字符串 布尔值
2.对象形式:对应着JS中的对象
3.数组形式
JSON.parse():可以将JSON格式的字符串解析成JS中对应的值, 一定要是合法的字符串否则会报错
JSON.stringify():可以将JS中的数据类型、对象或数组转换成JSON格式的字符串#json写import jsonnames = ['joker','joe','nacy','timi']
filename='names.json'
with open(filename,'w') as file_obj:json.dump(names,file_obj)#json读
import jsonfilename='names.json'
with open(filename) as file_obj:names = json.load(file_obj)print(names)

读写XML

HTML与XML的区别
1. HTML是用来显示数据的,其焦点是数据的外观;XML是用来描述数据、存放数据的,所以可以作为持久化的介质,其焦点是数据的内容 。
2. HTML将数据和显示结合在一起,在页面中把这数据显示出来;而XML则将数据和显示分开。

XML是可扩展标记语言(Extensible Markup Language)的缩写,其中标记是关键部分。用户可以创建内容,然后使用限定标记标记它,从而使每个单词、短语或块成为可识别、可分类的信息。
HTML是超文本标记语言。XML可以说是HTML的补充,可以自己定义。对xml文件进行解析
from lxml import etree etree.HTML()可以用来解析字符串格式的HTML文档对象,将传进去的字符串转变成_Element对象。作为_Element对象,可以方便的使用getparent()、remove()、xpath()等方法。例如:html_tree = etree.HTML(html_str)

读写excel

xls读
import xlrd
data = xlrd.open_workbook('test.xls') # 打开xls文件
table = data.sheets()[0] # 打开第一张表
for i in range(table.nrows): # 获取表的行数 循环逐行打印if i == 0: # 跳过第一行continueprint(table.row_values(i)[:13])  #取前十三列xls写
import xlwt
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('sheet_test', cell_overwrite_ok=True)sheet.write(0, 0, 'Python')
sheet.row(0).write(1, 'is')
sheet.write(0, 2, 'very very useful.')
sheet.col(2).width = 4000book.save('test.xls')

异常处理


异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正;另一方面,有些异常是不可避免的,但我们可以对异常进行捕获处理,防止程序终止。当发生异常时,我们就需要对异常进行捕获,然后进行相应的处理。python的异常捕获常用try...except...结构,把可能发生错误的语句放在try模块里,用except来处理异常,每一个try,都必须至少对应一个except。此外,与python异常相关的关键字主要有:关键字        关键字说明
try/except  捕获异常并处理
pass        忽略异常
as          定义异常实例(except MyError as e)
else        如果try中的语句没有引发异常,则执行else中的语句
finally     无论是否出现异常,都执行的代码
raise       抛出/引发异常例如捕获多个异常
try:<语句>except (<异常名1>, <异常名2>, ...):print('异常说明')或者按优先级排序
try:<语句>
except <异常名1>:print('异常说明1')
except <异常名2>:print('异常说明2')
except <异常名3>:print('异常说明3')else 和 finally str1 = 'hello world'
try:int(str1)
except IndexError as e:print(e)
except KeyError as e:print(e)
except ValueError as e:print(e)
else:print('try内没有异常')
finally:print('无论异常与否,都会执行我')

我的python学习(五)文件操作、异常捕获相关推荐

  1. python学习日记(文件操作)

    文件操作概述 计算机系统分为:操作系统,计算机硬件,应用程序. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序 ...

  2. Python学习之文件操作

    一.文件File 通过Python程序来对计算机中的各种文件进行增删改查的操作 - I/O(Input / Output) - 操作文件的步骤: ① 打开文件 ② 对文件进行各种操作(读.写),然后保 ...

  3. Python学习笔记--文件操作

    (一)文件的编码 1. 编码 编码是一种规则集合,记录了内容和二进制间进行相互转换的逻辑 编码有许多种,最常用的是utf-8 2. 使用编码的原因 计算机只能识别二进制数,因此要将文件的内容翻译为二进 ...

  4. Python学习(文件操作)

    文章目录 一.文件操作 1.1 常见的文件类型 1.2 文件操作的流程 1.3 文件的打开与关闭 打开 文件对象的属性 关闭 1.4 文件的读写: 读 写 1.5 定位读取 1.6 with open ...

  5. Python学习:文件操作

    一.打开文件 1.格式 在python,使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件,语法如下: open(name, mode) name:是要打开的⽬标⽂件名的字符串(可以包含 ...

  6. Python学习之==文件操作

    1.打开文件的模式 1 r,只读模式(默认)[不可写:文件不存在,会报错] 2 w,只写模式[不可读:不存在则创建:存在则删除内容] 3 a,追加模式[不可读:不存在则创建:存在则追加内容] 4 r+ ...

  7. python设置文件权限_PYTHON学习之文件操作;

    PYTHON学习之文件操作: 文件内容替换 for line in flielinput.input("filepath",inplace=1): line = line.repa ...

  8. Python中的文件操作和异常

    Python中的文件操作和异常 文章目录 Python中的文件操作和异常 一.文件 01. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 文本文件和二进制文件 02. 文件的基本操作 ...

  9. python怎么读取文件-python怎么读写文件操作

    本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...

  10. python怎么读写文件-python怎么读写文件操作

    本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...

最新文章

  1. R语言使用car包的outlierTest函数通过假设检验的方法检测回归模型中的异常值(outlier)、输出异常值对应的统计量、p值以及Bonferonnii校正p值
  2. 阻塞队列BlockingQueue 学习
  3. java 好用的工具类
  4. Akka入门(二)Akka的Actor模型如何满足现代分布式系统需求
  5. final cut pro的vlog模版的需要region of interests和导出视频注意事项
  6. java基础----递归实现文件搜索
  7. 重新解读DDD领域驱动设计(一)
  8. HEC-RAS如何修改SA/2D Connection的名称
  9. 20171113_Python学习五周一次课
  10. 【零基础学Java】—自定义异常(四十八)
  11. Java 面向对象和封装
  12. python调用msf_使用python操纵metasploit简单小记
  13. DNS迭代查询与递归查询的区别
  14. 电大与152双向数据同步的方案
  15. 【架构】分布式架构介绍及实现(简略)
  16. 媒体播放器之:TCPMP播放器简介
  17. linux终端的中国象棋,在Ubuntu 17.10上玩国际象棋等游戏
  18. php 路由修改密码,TPLINK路由器如何修改管理密码和无线密码)
  19. matlab处理fits文件,读取 FITS 文件中的数据
  20. 将手机流氓软件彻底赶出去

热门文章

  1. Sonatype Nexus: Recommended file descriptor limit is 65536 but count is 4096
  2. 5款高效软件推荐,每一款都是良心之作
  3. 重定向时,将Unreal4骨骼调整为Tpose
  4. IDEA导入项目之后可运行不报错但在JSP页面出现下列情况,求各位大佬给个解决办法,万分感谢
  5. C++ Primer 笔记
  6. Android动态更改通知图标,修改通知标志  |  Android 开发者  |  Android Developers
  7. 压缩软件Bandizip
  8. java中laber字体颜色设置,QLabel:设置文本和背景的颜色
  9. 巨量引擎信息流广告投放攻略
  10. android显示输入法键盘布局,android 解决输入法键盘遮盖布局问题