在项目实践中,我们经常会遇到读取、操作文件的情况,今天简单总结一下在python中操作文件的知识。
一、打开文件。
第一种方式:
filepath = "abc.text"
file = open(filepath, mode="r")
try:
filecontent = file.read()
finally:
file.close() # 此时,文件被显示关闭
在上述代码中
1 abc.text是文件路径和名称
2 mode是打开文件的模式。
第二种方式:
filepath = "abc.text"
with open(filepath, mode="r") as file:
filecontent = file.read() # 此时,文件自动关闭(隐式关闭)
with open(…) as file : 是使用上下文管理器的方式,确保文件在使用后被正确关闭,即使在处理文件时发生异常也能保证关闭。
两种方式比较:
比较以上两种写法,更推荐第二种,代码更简洁,第一种写法如果没有及时close文件,容易有内存泄露的风险。
二、读文件。
第一种方式:
file_path = "abc.text"
with open(file_path, 'r') as file:
lines = file.readlines()
print(lines) # ['helloword~~']
print(type(lines)) # <class 'list'>
print(lines[0]) # helloword~~
1 readlines用于逐行读取文件
2 将每一行存储在字符串保存在列表中
3 可以用索引下标来访问固定行,比如lines[0]
第二种方式:
file_path = "abc.text"
with open(file_path,'r') as file:
line = file.readline()
while line != '':
print(line.strip())
line = file.readline()
1 readline用于读取文件中的一行作为字符串返回,文件读取完毕,返回空字符串
比较以上两种方式:
1 readline一次性读取整个文件的所有行,并返回一个包含所有行的列表
2 readline 逐行读取文件,每次调用返回文件中的一行,适用于处理大型文件,减少内存占用
3 readlines 返回包含换行符的每一行,而readline 返回单独的行,需要手动去除换行符(line.strip())
三、写文件。
写入文本文件
filepath = "abc.text"
with open(filepath, mode="w") as file:
file.write('helloword~~')
写入CSV文件
这是在实际应用中遇到的一个问题:写入csv文件时,长整型显示为科学记数法,解决办法:
将写入的内容转为string类型,再在值后面加"\t"