python学习[第十四篇] 文件的输入与输出

标准文件类型

一般来说只要程序一执行,就会访问3个文件:

标准输入(键盘) stdin

标准输出(显示器缓冲区) stdout 默认输出到屏幕

标准错误(到屏幕的非缓冲输出) stderr 默认输出到屏幕

可以通过sys模块来访问这些文件的句柄,sys.stdin,sys.stdout,sys.stderr 可以通过print >>重定向到标准输出文件中

>>> import sys
>>> print >> sys.stderr, 'jhh'
jhh
>>> print >> sys.stdout, 'jhh'
jhh

文件对象

文件对象不仅可以用来访问普通的磁盘文件,也可以访问如上的抽象层面的文件。

可以通过内建函数file() 和open()作为钩子来操作文件。file()和open()具有相同功能,一般open作为读文件用,file文件用来写和其他操作。

文件对象的访问模式:

r 以读方式打开
rU   以读方式打开,同时支持通用换行符
r+ 以读写模式打开
rb  以二进制读模式打开
rb+ 以二进制读写模式打开
w 以写模式打开
w+ 以读写模式开店
wb 以二进制写模式打开
wb+ 以二进制读写模式打开
a  以追加方式打开
a+ 以读写模式打开
ab  以二进制追加模式打开
ab+ 以二进制读写模式打开

文件内建方法

文件方法可以分为四类 ,输入,输出,文件内移动和杂项

输入

read(size=-1)直接读取字节到字符串中,最多读取给定字节数,如果size没有指定,则size默认值为-1直接读取到文件末尾。

readline(size=-1) 读取文件的一行,然后整行包括换行符作为字符串返回。如果指定size且读取size个字节后没有达到末尾,那么就返回size个字节到字符串

realines(sizhint) 会读取剩余的行数,然后以字符串列表的形式返回。如果sizhint大于0 ,那么会返回大约sizehint个字符串,因为有字符串缓冲区的关系。

xreadlines() 会返回一个迭代类型。

>>> f=file('d:/test.txt','r')
>>> f.read(3)
'thi'
>>> f.readline(3)
's i'
>>> f.readline()
's a test12345\n'
>>> f.readlines()
['67890\n']
>>> f.tell()
28L>>> f.seek(0)
>>> for x in f.xreadlines():
...     print x,
...
this is a test12345

输出

write()把文本数据或二进制数据写到文件中。

writelines() 接收一个列表作为参数,换行符不会被自动加入,如果需要加入换行符的话需要手动加入。

>>> f=file('d:/test.txt','w')
>>> ttt='this is a test'
>>> f.write(ttt)
>>> f.tell()
14L
>>> flines=['12345\n','67890\n']
>>> f.writelines(flines)
>>> f.close()

文件内移动

seek(offset)方法 可以在文件中移动指针到不同的位置。offsite字节代表相对于某个位置的偏移量。offset默认为0

tell() 是seek的补充,告诉当前文件指针在文件的位置。

文件迭代

文件迭代方法比旧方法(逐一行读取),更为高效,而且写法简洁。

for eachline in f:

suite_to_repeat

旧方法 逐一行读取

for eachline in f.readline():

suite_to_repeat

#文件迭代
>>> f.seek(0)
>>> for x in f:
...     print x,
...
this is a test12345
67890
#旧方法,一次读入文件,然后遍历文件每一行
>>> f.seek(0)
>>> for x in f.readlines():
...     print x,
...
this is a test12345
67890#旧方法,每次都一行文件直到文件末尾
>>> while True:
...     x = f.readline()
...     if x:
...         print x,
...     else:
...         break
...
this is a test12345
67890

其他方法

close() 是file和open之后 用来关闭句柄的方法。要养成良好的编程习惯,打开文件句柄后,一定要记得关闭句柄

fileno()返回打开文件的描述符,是一个整型

flush()会将缓冲区数据立刻写入磁盘。

truncate(size) 如果给定size那么文件将被截取到size字节处。,如果没有给定size,那么将截取到当前位置,如果为0

文件对象内建属性

file.closed() 文件是否被关闭,未关闭则为false

file.encoding 文件使用的编码。 encoding为non 则使用系统默认编码

file.mode 文件的打开模式

file.name文件名

file.newlines 未读取到行分割符时为None,只有一种分隔符时为一个字符串,如果有多种分隔符时,则包含当前所遇到的所有分隔符的列表

file.softspace 为0表示在输出一个数据后加上空格符,为1表示不加

>>> print f.name
d:/test.txt
>>> print f.fileno
<built-in method fileno of file object at 0x01F6D1D8>
>>> print f.closed
False
>>> print f.encoding
None
>>> print f.mode
r
>>> print f.newlines
None
>>> print f.softspace
0

命令行参数

sys模块通过调用sys.argv属性提供了对命令行参数的访问。

sys.argv是命令行参数的列表 len(sys.arge)是命令行参数的个数,即c语言中的argc.

sys.argv[0]永远是程序的名称。

获取命令行参数在编写脚本时非常有用。例如

copy_file_to_each_server.py serverlist

此时sys.argv[0]即为文件名: copy_file_to_each_server.py ,而sys.argv[1]即为我们需要的参数 server列表我们通过遍历server列表将文件copy到每个server上。

命令行参数 :其他有用模块 getopt,getparse.

### cmdargs.py
import sys
allargs=sys.argv
print 'program name is : ',sys.argv[0]
print 'parameters are  :' ,sys.argv[1:]# results is
C:\Users\Ryan\Desktop>python cmdargs.py 1 2 3 4
program name is :  cmdargs.py
parameters are  : ['1', '2', '3', '4']

#####end

转载于:https://www.cnblogs.com/ryanpan/p/9362222.html

python学习[第十四篇] 文件的输入与输出相关推荐

  1. python学习[第十五篇] 文件系统

    python学习[第十五篇] 文件系统 对文件系统访问大多数都通过os模块实现. os 模块文件/目录访问函数 文件处理 mkfifo() 创建命名通道只用于linux remove(path)/un ...

  2. python原创第十四篇~判断,循环实战训练+答案

    2017-12-07 09:23:55 December Thursday the 49 week, the 341 day #原创第十四篇~判断,循环实战训练 题目:一个整数,它加上100后是一个完 ...

  3. C#(Csharp)笔记二十八——C# 文件的输入与输出

    一丶C# 文件的输入与输出 一个 文件 是一个存储在磁盘中带有指定名称和目录路径的数据集合.当打开文件进行读写时,它变成一个 流. 从根本上说,流是通过通信路径传递的字节序列.有两个主要的流:输入流 ...

  4. python【第十四篇】HTML基础

    什么是HTML? HTML(HyperText MarkUp Language)超文本标记语言,通过使用标记来描述文档结构和表现形式的一种语言,由浏览器进行解析,然后把结果显示在网页上,通俗的讲它就是 ...

  5. Python学习(十四)——常用模块1

    常用模块 sys os time random json 标准库 sys system的简写,系统的意思. 导包:import sys sys.modules # 获取当前程序中引入的所有模块 # m ...

  6. Python学习第十六篇——异常处理

    在实际中,很多时候时候,我们并不能保证我们所写的程序是完美的.比如我们程序的本意是:用户在输入框内输入数字,并进行后续数学运算,即使我们提醒了用户需要输入数字而不是文本,但是有时会无意或者恶意输入字符 ...

  7. 【Python学习系列十四】IPython命令行式交互界面工具Jupyter

    好的IDE对提高编码质量很有帮助,Jupyter Notebook的即编即视效果很有利于调试. IPython 是 Python 的原生交互式 shell 的增强版,可以完成许多不同寻常的任务,比如帮 ...

  8. python实现用户输入用户名和密码不能为空_Python学习【第四篇】用户输入及判断...

    用户输入:例1.写一个小程序为用户输入密码.流程如下:1.用户输入其用户名2.输出\u201CHello +用户名\\/usr\/bin\/env python # name = raw_input( ...

  9. Python学习日记(十四) 正则表达式和re模块

    正则表达式: 它是字符串的一种匹配模式,用来处理字符串,可以极大地减轻处理一些复杂字符串的代码量 字符组:它是在同一位置可能出现的各种字符组成了一个字符组,用[]表示,但是它的结果只能是一个数字或者一 ...

最新文章

  1. Java泛型进阶 - 如何取出泛型类型参数
  2. 关于微型计算机的ppt,微型计算机基础知识.ppt
  3. 发那科冲压直线搬运机器人_行业应用 | 直线七轴软件配置
  4. OSCHina技术导向:Java模板引擎velocity
  5. 八皇后非递归算法c语言,要求;编写实现八皇后问题的递归解法或非递归解法,对于任意给定的一? 爱问知识人...
  6. Android ListView性能优化实例讲解
  7. Hive的数据模型—桶表
  8. NAR | ZKSCAN3延缓人干细胞衰老的表观遗传机制
  9. python有趣的代码-有趣的一行 Python 代码
  10. 2021-05-06
  11. webview播放php音乐,android webview中的音乐的暂停与播放
  12. linux字符串替换命令,Linux系统字符串替换命令详细说明
  13. lintcode--报数
  14. SIM800A 建立网络
  15. u盘安全弹出有什么用?数据丢失还能恢复吗
  16. 明月当空照,python3D编程初阶:坐标、模型、纹理与光
  17. 如何通过web of science查询一个学者每一年的h-index?(h指数)
  18. 3 年9.9元,网站从HTTP升级到HTTPS
  19. Putty中Vim无法粘贴paste的问题
  20. R语言学习笔记8_回归分析和相关分析

热门文章

  1. 系统测试与端到端测试:哪一个更适合选择?
  2. android.view.WindowManager$BadTokenException
  3. python如何获取百度搜索结果的真实URL
  4. Qt实践录:常见控件操作示例2
  5. 在switch语句中使用字符串以及实现原理
  6. JSP和FreeMarker的比较
  7. web 服务器被配置为不列出此目录的内容。_三级网络技术考前选择题12—WWW服务器...
  8. 60-40-030-序列化-传统Avro序列化
  9. 【java】java 关键字: synchronized详解
  10. 【MySQL】MySQL warnings 的使用