用python123.io编程世界你好_python语言IO编程
一、文件读写
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编程相关推荐
- 二级c语言上机编程技巧,二级C语言上机编程题技巧总结
二级C语言上机编程题技巧 一. 方法总结 1. 二级C语言上机编程题在二级上机考试中属于较难题型,因此很多同学都害怕通过不了.综合 往年的考试,结合考试大纲,每年考试的编程题都有一定的规律和方法,只要 ...
- C语言怎样编程分子变化,C语言经典编程(一)
<C语言经典编程(一)>由会员分享,可在线阅读,更多相关<C语言经典编程(一)(20页珍藏版)>请在人人文库网上搜索. 1.C语言经典编程(一)[程序1]题目:古典问题:有一对 ...
- 汇编和c语言混合编程缺点,汇编C语言混合编程经验总结
ARM汇编语言和C语言混合编程 ATPCS规灾了一种模块化设计的观念,其基本内容是C模块(函数)和汇编模块(函数)相互的一套规?中还有类似的一套规晕腋芯谙呋惚喙δ芮看用有很多忌讳),厅知道(很寄几它/ ...
- 简述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 ...
- c语言编程实践题,C语言实践编程题
<C语言实践编程题>由会员分享,可在线阅读,更多相关<C语言实践编程题(11页珍藏版)>请在人人文库网上搜索. 1.C语言实践编程题一.分支结构()1. 利用一元二次方程ax ...
- c语言入门自学宝典,c语言学习编程宝典下载-c语言学习编程宝典appv1.2 - 起点软件园...
c语言学习编程宝典是主打学习编程的软件,里面有海量的编程学习资源让你选择,帮助你更好的学习C语言,非常的高效,还有名师为你指导,很适合需要的小伙伴们进行学习体验. c语言学习编程宝典说明 1.将C语言 ...
- c语言基础编程题文库,C语言基础编程题资料.doc
C语言基础编程题资料.doc |5-1 求幂之和 15 分本题要求编写程序,计算 sum21 22 23 cdots 2nsum2122232n.可以调用 pow 函数求幂.输入格式输入在一行中给出正 ...
- c语言网络编程百度云,C语言网络编程:C#网络编程(接收文件).pdf
c语言网络编程:C#网络编程(接收文件) - Part.5 疯狂代码 / ĵ http://DotNet/Article65322.html 本文源代码下载地址 /2009_03/Network-Pa ...
- c语言编程非线性方程求解,c语言计算机编程三种方法求解非线性方程
c语言计算机编程三种方法求解非线性方程 本 科 专 业 学 年 论 文题 目:非线性方程求解比较姓 名: 何 娟 专 业: 计算机科学技术系 班 级: 08 级本科(2)班 指 导 老 师: 刘 晓 ...
最新文章
- SpringBoot (三) :SpringBoot使用Freemarker模板引擎渲染web视图
- 如何解决打开一个DBF数据表时出现的“Index not Found…”错误(摘)
- Simulink中DPCM量化和编码仿真
- PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决
- java动态代理原理及解析
- linux 查看日志_干货 | 名企高频考点之谈谈Linux日志查看方式都有哪些
- python 物理引擎 摩擦力_参赛作品2-phenom的2D物理引擎
- 标量函数,多语句表值函数,内嵌表值函数
- SQL Server 2016的新功能–动态数据屏蔽
- 4-19 面向对象 的内置方法
- hdu 1575 Tr A (二分矩阵)
- java 如何执行dig 命令_如何直接在cmd下执行Dig命令
- 双浮点运算计算机在线,双浮点运算计算器
- 计算机想ping一下网络,Ping命令以检测Windows7下的计算机网络速度
- 大型分布式网站架构如何设计
- php对视频分割,如何把一个视频无损分割成多个视频片段(最好是质量和格式无变化)...
- Vue日历的编写,可显示周和月的模式(其中可以自定义日历里内容的显示)
- SAP 领料BAPI BAPI_GOODSMVT_CREATE 提示 短缺未限制使用的SL
- 基于 移远 BC26 移柯BL620的NB模块调试流程
- [洛谷]P1234 小A的口头禅 (#模拟)
热门文章
- 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)
- pcolor和surf画出的图形转存为eps或pdf格式出现横竖斜白色虚线网格,完美去掉!!!
- 激光雷达的厮杀18年:西方“诸神黄昏”,东方“新王隐现”
- 测试常用正则表达式整理汇总
- Win_XP_SP3系统下成功安装WinccV6.0_SP3a 经验分享
- php怎么彻底清楚,navicat怎么彻底删除
- 栈和队列的区别,栈和堆得区别
- 数模分析第五天---判别分析
- 控制器(Controller)规范
- Linux下批量修改文件名(rename)