一、文件读写

1、文件的打开和关闭。在python语言中,文件的打开和关闭分别使用的是open函数和close函数,两者一般是配套使用。

open + close模式:需要手动编写关闭文件代码,如果没有手动关闭文件,会引发一系列的问题。

f = open('text.txt',encoding='utf8')

print(f.read())

f.close() #需要手动关闭文件

你好

with + open模式:这种模式下,不需要在手动编写关闭文件的程序代码(f.close()),程序会在执行完with结构体中的程序后自动关闭打开的文件。

with open('text.txt',encoding='utf-8') as f:

print('读取文件信息:',f.read())

print('再次尝试读取文件:',f.read()) #文件已经被关闭,读取失败

读取文件信息: 你好

---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

in

2 print('读取文件信息:',f.read())

3

----> 4 print('再次尝试读取文件:',f.read())

ValueError: I/O operation on closed file.

2、open方法调用语法:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数:

file:必填,文件路劲(相对路径或者绝对路径)

mode:可选,文件打开模式

buffering:设置缓冲

encoding:一般设置为‘utf8’

errors:报错级别

newline:区分换行符

closefd:传入的file参数类型

opener:可选

文件打开模式mode:

方法

含义

解释

r

read

读取(默认)

w

write

截断写入

a

append

在原内容后追加写入

x

exclusive

独占写入,文件存在会报错

b

binary

二进制模式

t

text

文本模式(默认)

+

扩展

扩展为读写模式

mode='rt'模式:这是文件打开默认模式,比如:

with open('text.txt',encoding='utf-8') as f:

print('读取文件信息:',f.read())

读取文件信息: 你好

上例等效于:

with open('text.txt',mode='rt',encoding='utf-8') as f:

print('读取文件信息:',f.read())

读取文件信息: 你好

mode='w'模式:它会将覆盖掉原来的数据,所以使用时需要小心。比如:

with open('text.txt',mode='w',encoding='utf-8') as f:

f.write('hello world!')

with open('text.txt',mode='rt',encoding='utf-8') as f:

print('读取文件信息:',f.read())

读取文件信息: hello world!

上例,原文件信息为“你好”,但在“截断写入w”模式下写入下,文件中保存到信息被覆盖,现在文件信息为:hello world!所以使用“截断写入w”模式时需要非常小心。

mode='a'模式:追加模式,它会保留原来文件信息,并在文件末尾追加新的信息。

with open('text.txt',mode='a',encoding='utf-8') as f:

f.write('这是追加的内容')

with open('text.txt',mode='rt',encoding='utf-8') as f:

print('读取文件信息:',f.read())

读取文件信息: hello world!这是追加的内容

mode='x'模式:它会创建一个新文件,并写入内容,如果文件存在会报错。

with open('text.txt',mode='x',encoding='utf-8') as f:

f.write('这是独占写入模式')

---------------------------------------------------------------------------

FileExistsError Traceback (most recent call last)

in

----> 1 with open('text.txt',mode='x',encoding='utf-8') as f:

2 f.write('这是独占写入模式')

FileExistsError: [Errno 17] File exists: 'text.txt'

错误提示,文件已经存在了。

3、读写方法

方法

作用

read([size])

读取指定字节的内容

readline([size])

读取一行内容

readlines([size])

读取多行内容,返回列表

write(s)

写入字符串

writelines(s)

写入数据,支持字符串也支持列表

tell()

获取当前文件位置

seek(n)

移动文件位置

close()

关闭文件

read方法:读取指定字节的内容,显示的是字符串。

with open('text.txt',mode='r',encoding='utf-8') as f:

print(type(f.read()))

f.seek(0)#文件指针回到初始位置

print("读取到的内容为:",f.read())

读取到的内容为: hello world!这是追加的内容

123

456

789

readlines方法:读取多行内容,返回的是列表。

with open('text.txt',mode='r',encoding='utf-8') as f:

print(type(f.readlines()))

f.seek(0)#文件指针回到初始位置

print("读取到的内容为:",f.readlines())

读取到的内容为: ['hello world!这是追加的内容\n', '123\n', '456\n', '789']

readline方法:读取一行内容。

with open('text.txt',mode='r',encoding='utf-8') as f:

print(type(f.readline()))

f.seek(0)#文件指针回到初始位置

print("读取到的内容为:",f.readline())

读取到的内容为: hello world!这是追加的内容

writelines方法:将列表写入。

with open('text.txt',mode='a+',encoding='utf-8') as f:

f.writelines(['123','你好'])

f.seek(0)

print(f.read())

hello world!这是追加的内容

123

456

789123123123123123123123你好

write方法:将字符串写入,注意写的是字符串。

with open('text.txt',mode='a+',encoding='utf-8') as f:

f.write(['123','你好'])

f.seek(0)

print(f.read())

TypeError: write() argument must be str, not list

tell方法:获取当前文件位置。

with open('text.txt',mode='r',encoding='utf-8') as f:

print("读取到的内容为:",f.readline())

print("当前指针位置为:",f.tell())

print("读取到的内容为:",f.readline())

print("当前指针位置为:",f.tell())

读取到的内容为: key1kye2

当前指针位置为: 9

读取到的内容为: hello world!这是追加的内容

当前指针位置为: 43

二、输入和输出

1、input函数

input()函数有且只有一个参数,在执行input() 函数时会暂停程序运行,同时等待键盘输入;直到回车被按下,函数的参数即为提示输入的类型永远是字符串型(str)。这里尤其需要注意。

a = input() #输入1

print(type(a))

1

如果没有注意input函数输入的类型是字符串,那可能会导致如下错误,比如在进行数字计算时。

a = input() #输入1

b = input() #输入2

print(a + b)#按理说应该是1 + 2 = 3,但结果显示的是12,这其实是字符串的拼接导致。

1

2

12

2、print函数

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.

Optional keyword arguments:

file: a file-like object (stream); defaults to the current sys.stdout.

sep: string inserted between values, default a space.

end: string appended after the last value, default a newline.

flush: whether to forcibly flush the stream.

参数:

value:是带输出的内容。

sep:内容的分隔符。

end:内容结尾符号。

file:一个file-like对象,被输出的流。

flush:是否强制刷新。

sep参数:内容的分隔符,默认情况下是空格’‘进行分割。

print(1,2,"hello",(1,2,3))

1 2 hello (1, 2, 3)

上例是默认情况下空格分隔,再看’-‘分割:

print(1,2,"hello",(1,2,3),sep='-')

1-2-hello-(1, 2, 3)

end参数:内容结尾符号,默认情况下是换行符’\n‘。

print(1,2,"hello",(1,2,3))

print(1,2,"hello",(1,2,3))

1 2 hello (1, 2, 3)

1 2 hello (1, 2, 3)

输出的内容自动换行了,若把默认换行符修改成空格,那么就显示在一行:

print(1,2,"hello",(1,2,3),end='')

print(1,2,"hello",(1,2,3))

1 2 hello (1, 2, 3)1 2 hello (1, 2, 3)

还可以任意修改,比如结尾是三个???:

print(1,2,"hello",(1,2,3),end='???')

1 2 hello (1, 2, 3)???

file参数:一个file-like对象,被输出的流,默认情况下值是sys.stdout,其实就是把想要输出的内容显示的解释器控制台。

要理解sys.stdout,我们需要知道标准流的概念。背景如下(维基百科)

在Unix之前的操作系统,程序必须明确指出链接到合适的输入和输出数据。对这当中的许多系统而言,这牵涉一些错综复杂而又与特定操作系统相关的事,是一件吓人的程序设计挑战。如控制环境设置、访问一个文件表格、决定区域数据集、和决定读卡器、磁带、磁盘、打印机、打卡机或交互式终端机。

Unix 提供许多开创产的进步,其中之一是提供 抽象设备 :它免除了程序须要知道或在意它正与哪个设备沟通。 Unix 借由数据流的概念来消除这种复杂:一种数据字节的有序序列,直到读到文件结尾。程序员亦可依需求写入而无须宣告写入多少或如何组织。

另一个 Unix 突破为默认自动链接输入和输出-程序(和程序员)不用为了典型输入-处理-输出程序创建输入和输出。相对地,之前操作系统通常要求一些-有时复杂-工作控制语言(Job Control Language)以创建链接,或者,相者近似于协调的责任。

既然 Unix 提供标准流,Unix C 的运行环境被要求要支持它。结果不管什么操作系统, C 的运行环境(及 C 的派生)都提供类似功能。

python 中有三种标准输入输出流:sys.stdin(标准输入)、sys.stdout(标准输出)、sys.error(标准错误)

重定向

python中将标准输出重定向到某个文件当中:

with open('text.txt',mode='w',encoding='utf8') as f:

print("这是我要输出的内容",file=f)

结果没有显示,然后打开'text.txt'后,可以查看到输出的信息。

输入重定向到python程序当中,比如有这样一个程序:test.py

while True:

text = input()

print(text)

有这样一个文本文件(txt.txt),信息如下:

hello world!

hello

123

456

在cmd命令环境下执行python语句(python test.py < txt),输入重定向到python程序当中:

E:\python\WordCloudPro\mytest>python test.py < txt

hello world!

hello

123

456

Traceback (most recent call last):

File "test.py", line 5, in

text = input()

EOFError: EOF when reading a line

attempt to call a nil value

程序将文本文件(txt.txt)中的信息重定向到python程序中。

还可以在cmd命令环境下,把python程序中的输出信息和错误信息分别重定向到不同文件中:

python test.py 1>1.txt 2>error.txt

把输出信息定向到1.txt文件中,把错误信息重定向到error.txt文件中。

还可以在cmd命令环境下,把python程序中的输出信息重定向到某个文件中:

python test.py 1>1.txt 2>&1

用python123.io编程世界你好_python语言IO编程相关推荐

  1. 二级c语言上机编程技巧,二级C语言上机编程题技巧总结

    二级C语言上机编程题技巧 一. 方法总结 1. 二级C语言上机编程题在二级上机考试中属于较难题型,因此很多同学都害怕通过不了.综合 往年的考试,结合考试大纲,每年考试的编程题都有一定的规律和方法,只要 ...

  2. C语言怎样编程分子变化,C语言经典编程(一)

    <C语言经典编程(一)>由会员分享,可在线阅读,更多相关<C语言经典编程(一)(20页珍藏版)>请在人人文库网上搜索. 1.C语言经典编程(一)[程序1]题目:古典问题:有一对 ...

  3. 汇编和c语言混合编程缺点,汇编C语言混合编程经验总结

    ARM汇编语言和C语言混合编程 ATPCS规灾了一种模块化设计的观念,其基本内容是C模块(函数)和汇编模块(函数)相互的一套规?中还有类似的一套规晕腋芯谙呋惚喙δ芮看用有很多忌讳),厅知道(很寄几它/ ...

  4. 简述arm汇编和c语言混合编程,ARM汇编C语言混合编程

    3.4 ARM汇编&C语言混合编程 3.4.1 C内联ARM汇编 先看一个例子: # cat add.c 1 // add.c for s3c2410c board 2 // arm-linu ...

  5. c语言编程实践题,C语言实践编程题

    <C语言实践编程题>由会员分享,可在线阅读,更多相关<C语言实践编程题(11页珍藏版)>请在人人文库网上搜索. 1.C语言实践编程题一.分支结构()1. 利用一元二次方程ax ...

  6. c语言入门自学宝典,c语言学习编程宝典下载-c语言学习编程宝典appv1.2 - 起点软件园...

    c语言学习编程宝典是主打学习编程的软件,里面有海量的编程学习资源让你选择,帮助你更好的学习C语言,非常的高效,还有名师为你指导,很适合需要的小伙伴们进行学习体验. c语言学习编程宝典说明 1.将C语言 ...

  7. c语言基础编程题文库,C语言基础编程题资料.doc

    C语言基础编程题资料.doc |5-1 求幂之和 15 分本题要求编写程序,计算 sum21 22 23 cdots 2nsum2122232n.可以调用 pow 函数求幂.输入格式输入在一行中给出正 ...

  8. c语言网络编程百度云,C语言网络编程:C#网络编程(接收文件).pdf

    c语言网络编程:C#网络编程(接收文件) - Part.5 疯狂代码 / ĵ http://DotNet/Article65322.html 本文源代码下载地址 /2009_03/Network-Pa ...

  9. c语言编程非线性方程求解,c语言计算机编程三种方法求解非线性方程

    c语言计算机编程三种方法求解非线性方程 本 科 专 业 学 年 论 文题 目:非线性方程求解比较姓 名: 何 娟 专 业: 计算机科学技术系 班 级: 08 级本科(2)班 指 导 老 师: 刘 晓 ...

最新文章

  1. SpringBoot (三) :SpringBoot使用Freemarker模板引擎渲染web视图
  2. 如何解决打开一个DBF数据表时出现的“Index not Found…”错误(摘)
  3. Simulink中DPCM量化和编码仿真
  4. PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决
  5. java动态代理原理及解析
  6. linux 查看日志_干货 | 名企高频考点之谈谈Linux日志查看方式都有哪些
  7. python 物理引擎 摩擦力_参赛作品2-phenom的2D物理引擎
  8. 标量函数,多语句表值函数,内嵌表值函数
  9. SQL Server 2016的新功能–动态数据屏蔽
  10. 4-19 面向对象 的内置方法
  11. hdu 1575 Tr A (二分矩阵)
  12. java 如何执行dig 命令_如何直接在cmd下执行Dig命令
  13. 双浮点运算计算机在线,双浮点运算计算器
  14. 计算机想ping一下网络,Ping命令以检测Windows7下的计算机网络速度
  15. 大型分布式网站架构如何设计
  16. php对视频分割,如何把一个视频无损分割成多个视频片段(最好是质量和格式无变化)...
  17. Vue日历的编写,可显示周和月的模式(其中可以自定义日历里内容的显示)
  18. SAP 领料BAPI BAPI_GOODSMVT_CREATE 提示 短缺未限制使用的SL
  19. 基于 移远 BC26 移柯BL620的NB模块调试流程
  20. [洛谷]P1234 小A的口头禅 (#模拟)

热门文章

  1. 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)
  2. pcolor和surf画出的图形转存为eps或pdf格式出现横竖斜白色虚线网格,完美去掉!!!
  3. 激光雷达的厮杀18年:西方“诸神黄昏”,东方“新王隐现”
  4. 测试常用正则表达式整理汇总
  5. Win_XP_SP3系统下成功安装WinccV6.0_SP3a 经验分享
  6. php怎么彻底清楚,navicat怎么彻底删除
  7. 栈和队列的区别,栈和堆得区别
  8. 数模分析第五天---判别分析
  9. 控制器(Controller)规范
  10. Linux下批量修改文件名(rename)