接上一篇文件操作例子, 这里主要是写入文件的例子.
将test.txt按照key的奇数和偶数分类写入两个文件.
http://blog.163.com/digoal@126/blog/static/1638770402015027102245601/
postgres@localhost-> vi test.py
import os # 导入os模块
even=[] # 定义两个list
odd=[]
print(os.getcwd()) # 打印当前工作目录
os.chdir('/home/postgres') # 修改当前工作目录
print(os.getcwd())
try:
with open('test.txt') as data: # 自动关闭文件的方式打开文件. 当缩进部分操作完成, 自动调用data.close()
for each_line in data:
try:
(key,value)=each_line.split(',', 1) # 切割
if int(key) % 2 == 0: # 如果是偶数
even.append(key + " : " + value)
else: # 如果是奇数
odd.append(key + " : " + value)
except ValueError as err: # err记录错误值的内容, 必须str强制类型转换
print("ValueError: " + str(err))
except IOError as err:
print("Error: " + str(err))
try:
with open('even.txt', "w") as even_data: # 以w模式打开文件
print(even, file=even_data) # 写入文件
with open('odd.txt', "w") as odd_data:
print(odd, file=odd_data)
except IOError as err:
print('Error: ' + str(err))
测试 :
postgres@localhost-> python ./test.py
/home/postgres
/home/postgres
写入两个文件
cat even.txt
['2 : 75f9acd8d195f905b6ab6014ccef3a6b\n', '4 : 41d48a6a19a061e1297339681173c491\n', '6 : 0f33bd2eae60c9f00a2824e777c27d02\n', '8 : c51474a7d2f939ed97976ea67fdc554e\n', '10........
postgres@localhost-> cat odd.txt
['1 : 891ca83e2c0971a8a0dc8d7e5edda338\n', '3 : ac4c2dc4d9de3461614d26a132f9c82f\n', '5 : 756f8ed2d4dce954bb5af9793fbb6581\n', '7 : 24a75602d88008760ecb4043f1e47fa6\n', '9 :......
其他
finally: 一般用于无论是否出现except: 都执行.
例如, 如果不是有with来打开文件的话, 无论如何都要关闭文件描述符 :
try:
even_data = open('even.txt', "w") # 以w模式打开文件
print(even, file=even_data) # 写入文件
odd_data = open('odd.txt', "w")
print(odd, file=odd_data)
except IOError as err:
print('Error: ' + str(err))
finally:
even_data.close()
odd_data.close()
时间: 2024-10-25 19:11:56