python file operate example - 2

接上一篇文件操作例子, 这里主要是写入文件的例子.
将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()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值