Python 文件操作:打开方式和读写

文件操作

文件打开open

mode

  • w\r\a\x # 写、读、追加、新建
  • \b\t\+ # 二进制、文本(str)、updating
  • \wb \rb # 二进制读写
  • \w+\r+ \wt\rt # 读写的强化,可读可写

encoding

编码对应的是文件内字符串,是以何种方式编码的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-366jjqzC-1604062674671)(C:\Users\Young\AppData\Roaming\Typora\typora-user-images\image-20201030152557380.png)]

newline

指定文档字符串中的换行符,遇到newline= 对应的结束标志,换行

当open(newline=‘none’或’’)时,\r\n,\r,\n都会变成\n,称为universal;

可以用十六进制查看具体的字符

文件操作

内置方法

  • 写 f.write() f.writelines()一次性写入列表中所有值
  • 读 f.read() f.readline()逐行读取 f.readlines()保存为列表

遇到newline= 对应的结束标志,换行

  • 格式处理: .strip(), .join()
# 需要关闭文件
data = ['a','b','1','2']  # 只能写入字符
f = open('filename.txt','w',encoding='utf-8',newline='')
f.writelines(data) # 不能嵌套列表
f.close()
# 不需要关闭文件
with open('filename.txt','r',encoding='utf-8',newline='') as f:
    print(f.readlines())

csv模块

  • csv.reader(), csv.writer()
import csv
file = 'test.csv'
f = open(file,'w',encoding='utf-8',newline='')
wtr = csv.writer(f,dialect='excel')
data = [['a','b'],[1,2],[3,4]]
wtr.writerows(data)  # 一次性写入列表所有元素
f.close()

csv.reader(,dialect=“表示分隔符的类型”)
csv.writer.writerows() #写入列表中所有的值

  • csv.DictReader, csv.DictWriter() 写入字典
# csv.DictWriter()
import csv
file = 'test.csv'
fdnames = ['a','b']  # 指定字典中的key值为列标签
f = open(file,'w',encoding='utf-8',newline='')
wtr = csv.DictWriter(f,dialect='excel',fieldnames= fdnames)
data = [{
    
    'a':1,'b':2},{
    
    'a':3,'b':4}]
wtr.writerows(data)  # 一次性写入列表所有元素
f.close()
# csv.DictReader
f = open(file,encoding='utf-8',newline='')
rdr = csv.DictReader(f,dialect='excel')
fds = rdr.fieldnames # 把第一行视为变量名,获取成list
print(type(fds)) # list
for row in rdr:
    print(row[fds[0]],row['b']) # b为第二列的变量名
f.close()

猜你喜欢

转载自blog.csdn.net/weixin_43899514/article/details/109392991