文件输入输出及csv文件

读取文件

fileobject=open('b.txt')
result=fileobject.read()
print(result)
fileobject.close()

测试结果如下图所示:

写入文件:

fileobject=open('c.txt',mode='w')
fileobject.write('hello,world.您好')
fileobject.flush()   #清空缓冲区
fileobject.close()
print('写入成功...')
fileobject=open('c.txt')
result=fileobject.read()
print(result)
fileobject.close()

测试结果如下图所示:

使用上下文管理器读取文件

#context manager 上下文管理器 with
with open('b.txt','r') as f:
    result =f.read()
    print(result)

测试结果如下图所示:

一行及多行的读取:

#读取一行
#context manager 上下文管理器 with
with open('b.txt','r') as f:
    result =f.readline()
    print(result)
print('-------------------------')    
#读取多行
#context manager 上下文管理器 with
with open('b.txt','r') as f:
    result =f.readlines()
    
print(result)  

测试结果如下图所示:

f.readlines()是一次性读完所有的行,存到内存中就关闭f ,缺点是一次读完比较耗内存,对于大文件不适用

#一行一行输出
with open('b.txt','r') as f:
    #enumerate 枚举,集合
    for i,line in enumerate(f.readlines()):
        print(str(i+1),'->',line)

测试结果如下图所示:

#一行一行输出
with open('b.txt','r') as f:
    #enumerate 枚举,集合
    for line in f:
        print(line) 

f是一次读一行,在循环中是没有关闭 这种缺点就是在读取的使用占用此文本,别人无法操作此文本
测试结果如下图所示:

从一个文件读取数据并写入另一个文件
with open('b.txt') as b:
    with open('f.txt','w') as f:   
        for line in b.readlines():
            f.write(line)  
with open('f.txt','r') as f:
    #enumerate 枚举,集合
    for line in f:
        print(line) 

如果没有f.txt文件,则创建,w表示覆盖原有的文本
测试结果如下图所示:
寻找文本里面的位置,可以在下载时候使用

fileobject=open('b.txt','a')
print('当前位置:'+str(fileobject.tell())  )
fileobject.seek(fileobject.tell()+1)
fileobject.write('胶水')
fileobject.flush()
fileobject.close()

测试结果如下图所示:
读取csv文件

import csv
with open('a.csv', 'r') as csvfile:
    spamreader = csv.reader(csvfile)
    for row in spamreader:
        print (row)

测试结果如下图所示:
向csv文件中写入数据

import csv
with open('myfile.csv','w') as f:
    writer=csv.writer(f)
    writer.writerows(  ['1','a','30']  )
    l=[['2','b','30'],['3','ww','30']]
    writer.writerows(l)
import csv
with open('a.csv', 'r') as csvfile:
    spamreader = csv.reader(csvfile)
    for row in spamreader:
        print (row)  

测试结果如下图所示:

输出的时候发现每一行都会有空格,这是可以在open()方法里面加入一个参数newline=’’

import csv
with open('myfile.csv','w',newline='') as f:
    writer=csv.writer(f)
    writer.writerows(  ['1','a','30']  )
    l=[['2','b','30'],['3','ww','30']]
    writer.writerows(l)
import csv
with open('myfile.csv', 'r') as csvfile:
    spamreader = csv.reader(csvfile)
    for row in spamreader:
        print (row)  

测试结果如下图所示:

自己创建一个csv,这个csv用|来分割

with open('b.csv','r') as csvfile:
    spamreader = csv.reader(csvfile,delimiter='-')
    for row in spamreader:
        print(row)

测试结果如下图所示:
方言的定义及使用

#定义一个方言
print(csv.list_dialects())
#注册新方言
csv.register_dialect('zydialect',delimiter='-')
print(csv.list_dialects())
#使用一个定义的方言
with open('b.csv','r') as csvfile:
    spamreader=csv.reader(csvfile,dialect='zydialect')
    for row in spamreader:
        print(row)

测试结果如下图所示:

猜你喜欢

转载自blog.csdn.net/YBK233/article/details/81737015