赞
踩
标识 | 含义 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
b | 可以在上述标识后边加b,表示字节层面,例如‘wb’,可以借助requests模块下载请求图片到本地 |
举个例子:
假设现在有个1.txt的文件
我们简单的读取一下
通常操作文件,我们会使用这种方式,可以不用关闭文件,是Python的一种简洁方式
关于读文件有3种方式,这里说一下区别
方法 | 作用 |
---|---|
read | 1.读取整个文件,将文件内容放到一个字符串变量中。2.如果文件非常大,尤其是大于内存时,无法使用read()方法。3.read()直接读取字节到字符串中,包括了换行符 |
readline | 1.readline()方法每次读取一行;返回的是一个字符串对象,保持当前行的内存 2.比readlines慢得多 3.readline() 读取整行,包括行结束符,并作为字符串返回 |
readlines | 一次性读取整个文件;自动将文件内容分析成一个行的列表。 |
有一个示例文件,内容如下
读取文件
import csv # 使用csv模块
file_path = 'result.csv'
# 读取csv文件
with open(file_path, 'r') as f:
reader = csv.reader(f, delimiter=',') # 默认的情况下, 读和写使用逗号做分隔符(delimiter)
for row in reader:
print(row)
结果
import csv
from itertools import islice
with open('2.csv', 'r') as f:
reader = csv.reader(f)
for row in islice(reader, 1, None): # 跳过表头的第一行
print(row)
这个是通过列表的方式进行写入,如果有标题,需要自己一一对应
import csv
with open('some.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(['1', '1', '1', '1'])
writer.writerow(['2', '2', '2', '2' ])
问题: 发现每写完一行会加入一个空行
解决办法: Python3因此需要加入在open( )中增加一个参数newline=’’
import csv
with open('some.csv', 'w',newline='') as f:
writer = csv.writer(f)
writer.writerow(['1', '1', '1', '1'])
writer.writerow(['2', '2', '2', '2' ])
Python2可以把w或者a改成字节存储,可以避免这个问题,这里我封装了一下python2的写入
def write_to_csv(file_path, row, fileheaders):
with open(file_path, 'ab+') as f:
f.write(codecs.BOM_UTF8)
writer = csv.writer(f)
if not os.path.getsize(file_path):
writer.writerow(fileheaders)
writer.writerow(row)
print(row)
import csv data = [ {'name': '张三', 'age': 15, 'sex': '男'}, {'name': '李四', 'age': 12, 'sex': '男'}, {'name': '彪子', 'age': 1, 'sex': '女'}, ] keys = data[0].keys() # 这里每行key相同,我随便取一行做表头 with open('result.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.DictWriter(f, fieldnames=keys) writer.writeheader() # writer.writerows(data) # 按顺序写全部 writer.writerow(data[0]) # 只写一条
原文件
import xlrd
file = 'demo.xlsx'
sheet_name='Sheet1'
work = xlrd.open_workbook(file)
work_sheet = work.sheet_by_name(sheet_name)
print(work_sheet.cell_value(2, 0)) # 读取第3行的第1列
# coding: utf-8 import xlrd from xlutils.copy import copy file = 'demo.xlsx' sheet_name = 'Sheet1' work = xlrd.open_workbook(file) work_sheet = work.sheet_by_name(sheet_name) # 对数据表格进行复制 new_file = copy(work) ws = new_file.get_sheet(0) # 往新表格写数据 ws.write(4, 0, '4') ws.write(4, 1, 'Danny') # 保存 new_file_name = 'new_demo.xlsx' new_file.save(new_file_name)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。