分享一个简单的python读写文件脚本

作者:jopen 时间:2022-11-21 20:03:00 

先来看一段创建文件并写入文本的代码,然后作介绍。


 #!/usr/bin/env python

'makeFile.py -- create a file'

import os
 ls = os.linesep

# get filename
 while True:
   fname = raw_input('Input an unused file name >')
   if os.path.exists(fname):
     print "ERROR: '%s' already exists" %fname
   else:
     break

# get file content lines
 all = []
 print "\nEnter lines (input '.' to quit).\n"

# loop until user terminates input
 while True:
   entry = raw_input('>')
   if entry == '.':
     break
   else:
     all.append(entry)

# write lines to file with proper line-ending
 fobj = open(fname, 'w')
 fobj.writelines(['%s%s' %(x, ls) for x in all])
 fobj.close()
 print 'DONE'

if __name__ == '__main__':
   print 'innter module'

上面的代码用来创建一个新文件并写入文本,第6行给os模块中的linesep起了给别名ls,这样做的好处一方面简化了长长的变量名,另一方面也是主要原因用于提高代码性能,因为访问这个变量时首先要检测os模块,然后再解析linesep,linesep是行结束符标志,linux下是'\r',windows下是'\r\n',用本地变量保存更好。第34行使用了__name__,这主要用于代码内测试,它的值是__main__,但python文件通常作为模块被其它文件import,这时__name__的值是这个模块名,就不会执行模块内的测试代码了。


 #!/usr/bin/env python

'readFile.py -- read and display file'

# get filename
 fname = raw_input('Enter filename >')
 print  

# attempt to open file for reading
 try:
   fobj = open(fname, 'r')
 except IOError, e:
   print "***** file open error:", e
 else:
   # display contents to the screen
   for eachLine in fobj:
     print eachLine,
   fobj.close()

上面的代码用来读文件并显示其内容到屏幕上,使用了try-except-else异常处理机制。

这里简单介绍下try的工作原理:当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

#1、如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。

#2、如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。

#3、如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

来源:http://www.open-open.com/code/view/1429270548955

标签:python,打开文件读写
0
投稿

猜你喜欢

  • Python 数据结构之队列的实现

    2021-11-28 15:27:26
  • Python实现对字典分别按键(key)和值(value)进行排序的方法分析

    2021-06-05 00:36:32
  • python3中sorted函数里cmp参数改变详解

    2022-11-11 17:21:49
  • 浅析PEP572: 海象运算符

    2023-06-28 10:56:10
  • python输出指定月份日历的方法

    2022-11-27 11:39:18
  • mysql常用命令行操作语句

    2024-01-12 23:51:20
  • 历数Firefox2.0对XML处理的改进

    2007-11-27 12:41:00
  • sql语句中单引号嵌套问题(一定要避免直接嵌套)

    2024-01-16 14:48:52
  • python 类对象的析构释放代码演示

    2023-11-22 18:54:53
  • 表单name与id的区别和相似之处

    2007-12-13 12:55:00
  • 把你的数据库置于版本控制之下

    2009-04-25 10:01:00
  • 轻松实现TensorFlow微信跳一跳的AI

    2021-11-24 10:35:40
  • pytorch 如何自定义卷积核权值参数

    2021-10-30 19:10:22
  • Python利用matplotlib绘制约数个数统计图示例

    2023-11-12 16:00:43
  • Python语言实现SIFT算法

    2022-12-30 17:58:14
  • 交互设计师的尴尬-我的强项是什么?

    2008-12-29 14:00:00
  • 卸载安装Node.js与npm过程详解

    2024-05-13 09:29:58
  • Python实现矩阵加法和乘法的方法分析

    2023-07-30 09:39:06
  • Python学习之装饰器与类的装饰器详解

    2023-11-23 20:04:07
  • 如何结束一个session变量

    2009-08-12 19:20:00
  • asp之家 网络编程 m.aspxhome.com