您当前的位置: 首页 >  不愿透露姓名の网友 Python

python(21):文件的IO操作【对csv和txt文件的操作】

不愿透露姓名の网友 发布时间:2019-08-01 21:21:23 ,浏览量:4

文章目录

  • 一、简单的文件操作
    • 1.常用的文件读取标志符
    • 2.txt文件的读操作
    • 3.txt文件的写操作
    • 4.read、readline、readlines的区别
  • 二、对csv文件的读写操作
    • 1.读取操作
    • 2.读取时候跳过某一行
    • 3.写入csv
  • 三、利用python对excel进行追加数据
    • 1.读取excel的某个sheet的某一行的某一列
    • 2.追加数据到新文件

一、简单的文件操作

1.常用的文件读取标志符

r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
  • file=open(r'a.txt' , 'r')

  • file叫做文件的句柄

  • 第一个参数是文件的路径

  • 文件路径前边的r叫元字符,避免路径中有转义字符,而引起其他不必要的事情

  • 后边的r表示读,常见的读取见图12-1

2.txt文件的读操作

2.1 read读取

a=open('E:\\text.txt','r')
print(a.read(4))#读完会接着读
print(a.read(4))
print(a.read())#默认会读完索引代码
a.close()

2.2 readline读取

a=open('E:\\text.txt','r')
print(a.readline())
#每行最后的换行是\n,会被解析出来,再加上print本身是换行,所以会下边空一行
print(a.readline())
a.close()

2.3 readlines读取

a=open('E:\\text.txt','r')
b=a.readlines()#会一行一行进行读写
print(b)
a.close()
for i in b:
    print(i)

3.txt文件的写操作

a=open('E:\\text.txt','w')
ls=['1','2\n','3']
a.writelines(ls)
a.close()

注意:每次写都是从头开始写会覆盖原先的内容,因此可以使用a+进行追加

a=open('E:\\text.txt','w')
b='我是蔡徐坤'
a.write(b)
a.close()

4.read、readline、readlines的区别

方法作用
read1.读取整个文件,将文件内容放到一个字符串变量中。2.如果文件非常大,尤其是大于内存时,无法使用read()方法。3.read()直接读取字节到字符串中,包括了换行符
readline1.readline()方法每次读取一行;返回的是一个字符串对象,保持当前行的内存 2.比readlines慢得多 3.readline() 读取整行,包括行结束符,并作为字符串返回
readlines一次性读取整个文件;自动将文件内容分析成一个行的列表。

二、对csv文件的读写操作

1.读取操作

文件内容

读取文件

import 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)

结果

2.读取时候跳过某一行

Python csv 跳过第一行 去除表头 读取文件内容

import csv
from itertools import islice
with open('2.csv', 'r') as read_file:
    reader = csv.reader(read_file)
    for row in islice(reader, 1, None):
        print(row)

3.写入csv

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改成字节存储

import csv

with open('some.csv', 'ab+') as f:
    writer = csv.writer(f)
    writer.writerow(['1', '1', '1', '1'])
    writer.writerow(['2', '2', '2', '2' ])

三、利用python对excel进行追加数据

原文件

1.读取excel的某个sheet的某一行的某一列

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列

2.追加数据到新文件

# 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)

关注
打赏
查看更多评论
  • 4浏览

    0关注

    121博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录