csv 文件的读写
# 获取当前路径
import os
import sys
path = os.path.dirname(sys.argv[0])
print(path)
# 写数据
data =[("a","b","c"),("d","e")]
for i in data:
with open('write.csv','a',newline='')as f:
writer = csv.writer(f)
writer.writerow(i)
# 读数据
第一种:
reader = csv.reader(open('write.csv','r'))
print(reader)
for list_1 in reader:
print(list_1)
第二种:
with open('write.csv','r')as f:
reader=csv.reader(f)
print(reader)
for list_1 in reader:
print(list_1)
一般文件读写:
1.新建(打开)文件
1.1在python,使用open函数,可以打开一个已经存在的文件,或者如果该文件不存在,则会创建一个新文件。
格式如下:open(“文件名”,访问模式) ,默认的创建的目录在当前程序所在的目录
常用的mode用法:
温馨提示:频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读、只写 的方式来操作文件
以二进制形式读写文件 mode: rb,wb,ab等
如下表:
模式 | 可做操作 | 若文件不存在 | 是否覆盖 |
---|---|---|---|
r | 只能读 | 报错 | - |
r+ | 可读可写 | 报错 | 是 |
w | 只能写 | 创建 | 是 |
w+ | 可读可写 | 创建 | 是 |
a | 只能写 | 创建 | 否,追加写 |
a+ | 可读可写 | 创建 | 否,追加写 |
文件的读写操作read/write
1.写数据:使用write(“string”),可以完成向文件写入数据,注意:如果文件不存在那么创建,如果存在那么就先清空文件(覆盖),然后写入数据到文件里.
f= open("a.txt",'w')
f.write("python")
f.close()
2.读数据:使用read(size)可以从文件中读取数据,size表示要从文件中读取的数据的长度(字符个数),如果没有传入size或者为负,那么就表示读取文件中所有的数据,read()将读取的数据以字符串的形式返回。注意:
如果open是打开一个文件,那么可以不用写打开的模式,即只写 open(‘a.txt’)
如果使用read读了多次,那么后面继续使用read读取的数据是从上次读完后的位置开始的
注意:read ()方法默认会把文件的所有内容 一次性读取到内存,当然可以指定读取的字符数。如果文件太大,对内存的占用会非常严重
# 写文件
f= open('a.txt','w',encoding='utf-8')
f.write("我爱 python!\n2019")
f.close()
# 读文件
f= open('a.txt','r',encoding='utf-8')
str =f.read(5)
print(str)
f.close()
输出结果: 我爱 py
str1= f.read(2)
print(str1)
输出结果: th
3.读数据:readline()
,对原文件的数据按行读取,(行的划分是\n).每次只读取一行。如果有多次读取的话,下面一次读取的偏移量是上面读取后的偏移量。
# 读文件
f= open('a.txt','r',encoding='utf-8')
str =f.readline()
print(str)
str1=f.readline()
print(str1)
f.close()
输出结果:
我爱 python!
2019
4.读数据:readlines
()可以按照行的方式把整个文件中的内容进行一次性读取,读取所有行(直到结束符 EOF
)并返回列表,并且返回的是一个列表,其中每一行(按照换行符进行判断一行)的数据为一个元素。
# # 读文件
f= open('a.txt','r',encoding='utf-8')
str =f.readlines()
print(str)
for i in str:
print(i)
f.close()
输出结果:
['我爱 python!\n', '2019']
我爱 python!
2019
python \r \t \n 各种转义字符
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
\’ | 单引号 |
\” | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数yy代表的字符,例如:\o12代表换行 |
\xyy | 十进制数yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
python中join和split区别
split 将字符串拆分成列表元素
str1 = 'a_b_c'
list1 = str1.split('_')
print(list1)
join 将列表元素连接成字符串
list1 = ['a', 'b', 'c']
str1 = ','.join(list1)
print(str1)
python strip()函数 使用方法介绍
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。
函数原型
声明:s为字符串,rm为要删除的字符序列
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
注意:
- 当rm为空时,默认删除空白符(包括’\n’, ‘\r’, ‘\t’, ’ ')
str1 = 'a_b_c_a_a'
str2 = str1.strip('a')
print(str2)
输出结果:_b_c_a_
str1 = 'a_b_c_a_a'
str2 = str1.lstrip('a')
print(str2)
输出结果:_b_c_a_a
str1 = 'a_b_c_a_a'
str2 = str1.rstrip('a')
print(str2)
输出结果:a_b_c_a_
python 用列表推导式 —去除列表中的\n 和空字符
list1 = ['\n', 'abc\n', ]
list2 = [x.strip() for x in list1 if x.strip() != '']
print(list2)
输出结果:['abc']