python文件输入符_python文件IO与file操作

1 标准输入输出IO

- (1) 打印到屏幕 print()

print(self, *args, sep=’ ‘, end=’n’, file=None):

把传递的表达式 转换成一个 字符串表达式

known special case of 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.

- (2) 读取键盘的输入 print()

input(*args, **kwargs):

从标准输入读取一个行,并返回一个字符串

Read a string from standard input

注意 python2 中

raw_input 与python3的input一样

input可以接收一个Python表达式作为输入,并将运算结果返回

str = input("请输入表达式:");

[i for i in range(4)]

print "你输入的内容是: ", str

[0,1,2,3]

2 数据文件的读写,打开和关闭文件

- (1) 创建file文件对象—open()方法

用Python内置的open()函数打开一个文件,创建一个file对象,然后使用相关的方法才可以调用它进行读写

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

f--文件句柄对象

file:访问的文件名称。

mode:决定了打开文件的模式:只读,写入,追加等。默认文件访问模式为只读(r)。

encoding:指定编码格式,gbk,utf8..。

buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

打开文件的不同方式:

模式描述

r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+打开一个文件用于读写。文件指针将会放在文件的开头。

rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

文件操作图解:

2112205-861c05b2bdbc9c28.png

模式

r

r+

w

w+

a

a+

+

+

+

+

+

+

+

+

+

创建

+

+

+

+

覆盖

+

+

指针在开始

+

+

+

+

指针在结尾

+

+

- (2) file文件对象的属性和方法

一个被打开的file文件,可以通过操作得到有关该文件的各种信息

属性描述

file.closed返回true如果文件已被关闭,否则返回false。

file.mode返回被打开文件的访问模式。

file.name返回文件的名称。

f=open(r"filename","rb")

print(f.name) filename

print(f.closed) False

print(f.mode) rb

f.close()

print(f.name) filename

print(f.closed) True

print(f.mode) rb

close()方法

File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入

read()方法

按打开方式是 字节还是字符

read(self, size=-1)

按格式读长度

file.read(2)

r--->2 字符

rb--->2 字节

seek()方法

后面是字节,指定指针位置

seek(self, *args, **kwargs)

file.seek(2)----字节数----gbk--2个字节一个汉字

file.seek(3)----字节数----utf-8--3个字节一个汉字

file.tell()

查看当前指针位置

seek(self, *args, **kwargs)

position = fo.tell();

print("当前文件位置 : ", position)

file.writable()

True if file was opened in a write mode.

file.readable()

True if file was opened in a read mode.

file.flush()

从内存强刷到硬盘

一般文件操作没有完成到硬盘上的时候,数据不会存在

file.readline()

读一行

readline() --------- 每行

for line in file:

print(line.read()) ========>>>>> # python 2 xreadlines()

file.readlines()

返回一个列表

file.truncate()

截取 指针位置前面的数据

- (3) 上下文管理 with open(..) as f:

with open(r'filename',mode='rb') as file:

file.read()

例子

读写操作 字节,字符打开

1

path=r'filename'

file=open(path,encoding='utf-8',mode='r')

a=file.read()

print(a)

file.close()

2

path=r'filename'

file=open(path,'rb')

a=file.read().decode('gbk')

print(a)

file.close()

3

path=r'filename'

file=open(path,mode='w',encoding='utf-8')

file.write('adasdad')

file.close()

4

path=r'filename'

file=open(path,'wb')

file.write('哈哈哈'.encode('utf-8'))

file.close()

- (4) 文件的修改与重命名

文件修改,重命名需要借助 os模块的 remove()和rename()

原文件,读取内容 — 修改 — 重新新建一个文件,接收 — 删除原文件

os模块提供执行文件处理操作的方法,比如重命名和删除文件

rename(current_file_name, new_file_name)

remove(file_name)

例子

file2=open(r'f2','w',encoding='utf-8')

with open(r'f1','r',encoding='utf-8') as file1:

for line in file1:

mylist=line.split('|')

mylist[0]=mylist[0][0:2]

mystr='|'.join(mylist)

file2.write(mystr)

file2.close()

import os

os.remove(r'f1')

os.rename(r'f1',r'f2')

3 目录操作方法 os模块

mkdir()方法

当前目录下创建一个新目录

import os

# 创建目录test

os.mkdir("test")

chdir()方法

切换目录

import os

os.mkdir("d:test")

getcwd()方法

显示当前的工作目录

import os

print(os.getcwd())

rmdir()方法

删除目录,删除之前,它的所有内容应该先被清除

import os

os.rmdir("d:text")

4 常见的文件目录操作方法 附录:

OS 对象方法:

提供了处理文件及目录的一系列方法

序号方法及描述

8

9

10

11

12

13

14

16

17

18

19

20

22

23

24

26

27

28

29

30

31

32

33

34

35

36

37os.mknod(filename[, mode=0600, device])

创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe)。

38

39

41

43

45

47

48

49

50

52

54

55

57

58

59

61

63

file句柄 对象方法:

序号方法及描述

1关闭文件。关闭后文件不能再进行读写操作。

2刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

3返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

4如果文件连接到一个终端设备返回 True,否则返回 False。

6从文件读取指定的字节数,如果未给定或为负则读取所有。

8读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。

10

11截取文件,截取的字节通过size指定,默认为当前文件位置。

12将字符串写入文件,没有返回值。

13向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

和县机电工程学校工业机器人_【校企合作】学校举行工业机器人教学系统捐赠仪式...

点击上方蓝字关注我们12月22日下午,我校与广东诚飞智能科技有限公司在公共实训中心会议室举行了“工业机器人教学系统”捐赠仪式。广东诚飞智能科技有限公司总经理杨成芳、区域经理杨少杰,学校副校长罗红金、教务科科长冯华以及机电专业组教师代表参加了…

TCP三次握手(待细研究)

xu言: 看到一张不错清晰的Tcp三次握手图,收藏 Initiator 发起人 Receiver 接收者 LISTENING 状态xx服务启动后首先处于侦听(LISTENING)状态。 ESTABLISHED 状态ESTABLISHED的意思是建立连接。表示两台机器正在通信。 CLOSE_WAIT…

ubuntu20.04下安装vmshare tools_Go语言的安装与配置-vscode

vscode是比较好用的,虽然goland自带插件但是收费,所以配置vscode虽然麻烦但是也值得。Step1.下载安装vscode和golangDownload Visual Studio Code - Mac, Linux, Windows​code.visualstudio.comThe Go Programming Language​golang.google.cnnext step…

小说中人称转换作用_长篇儿童小说《合欢》:一树红绒落马缨

浙江少年儿童出版社出版肖复兴的第二部长篇儿童小说《合欢》,因对儿童独立人格的自觉尊重与强调,以及对人物复杂内心世界的深度开掘与勘探,回应了“儿童的被发现”这一重要课题。《合欢》不仅是作者对“远逝的童年”的一次深情回眸&#xff0…

asp按时间自动递增编号_约束力最强的手铐——美国ASP钢性手铐

美国ASP公司生产的钢性手铐,是目前为止世界上约束力最大的手铐。这种手铐的最初设计,是借鉴了中国古代的刑具——枷。钢性的手铐链接,非常好的约束罪犯的双手,使其没有任何活动的空间。而且最大的好处就是,执法人员只要…

脚本启动慢_Linux 常用运维脚本,建议收藏

同步本机时间ntpdate 210.72.145.44清除系统缓存,空出更多内存free && sync && echo 3 > /proc/sys/vm/drop_caches && free杀掉僵尸进程kill $(ps -A -ostat,ppid | awk /[zZ]/ && !a[$2] {print $2})显示全部arp解析tcpdump a…

eclipse maven项目 class类部署不到tomcat下_Servlet tomcat部署

网上搜到的很多利用eclipse结合tomcat开发servlet的教程都要修改server.xml感觉这种方式太粗暴了,server.xml最好是与应用无关的,这里比较推荐export war的方式进行部署先记录一下环境配置过程我的系统是ubuntu 14.04;下载eclipse for javaee…

tensorflow 指定cpu 但是还会运行 gpu_PyTorch VS TensorFlow 谁最强?这是标星 15000+ Transformers 库的运行结果...

点击上方“AI有道”,选择“星标”公众号重磅干货,第一时间送达作者 | Lysandre Debut译者 | 陆离出品 | AI科技大本营(ID: rgznai100)【导语】自然语言处理预训练模型库 Transformers 实现了几种用于 NLP 任务的最先进的 Transformer 架构,如…

after不显示_web前端入门到实战:css实现单行、多行文本超出显示省略号

前言:项目中我们经常遇到这种需求,需要对单行、多行文本超出显示为省略号。这篇文章主要总结了小编解决此问题的方法,有不足之处欢迎大家指正。单行文本省略.ellipsis-line {border: 1px solid #f70505;padding: 8px;width: 400px;overflow: …

linux下查看内存使用情况

基本内存术语解读 1> free -m 同样是做为缓存,buffers和cache又有啥区别呢? 于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is something that has yet to be "written" to d…

redistemplate使用_如何使用 SpringBoot + Redis 优雅的解决接口幂等性问题

# 前言在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。如何…

jdbctemplate 开启事务_SpringBoot 系列教程之事务隔离级别知识点小结

上一篇博文介绍了声明式事务Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上,并通过实例演示不同的事务隔离级别下,脏读、不可重复读、幻读的具体场景I. 基础知识在进入…

东风小康为什么是dfsk_助力地摊经济瑞驰纯电动物流车和东风小康微型货车厚积薄发...

核心提示:小康集团旗下瑞驰纯电动物流车及东风小康微型货车深耕多年,其中瑞驰纯电动物流车2015年上市,连续多年销量位列中国行业第一。近日,地摊经济成为热门,疫情常态化下,地摊经济、小店经济对于快速恢复…

链表中删除选定结点的优雅操作!

一般我们在进行单向链表链表的结点删除操作时,都是通过相应的结构体指针进行链表的遍历,然后找 到需要删除的节点,为了完成删除操作,我们需要在寻找该节点时,不断地记录下这个节点前面的节点 (prev),来保证当特定结点被删除后,我们还可以将断开的链表重新连起来,下面给出一段…

python抢货程序_Python自动化xpath实现自动抢票抢货代码示例

本篇文章小编给大家分享一下Python自动化xpath实现自动抢票抢货代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。 总代码: for i in range(51,56): driver.imp…

Ubuntu安装pycharm并且激活

下载pycharm: https://www.jetbrains.com/pycharm/download/#sectionlinux 选择专业版下载,然后提取,也就是解压 进入解压后目录,再进入bin目录,打开终端执行命令 ./pycharm.sh pycharm就启动了 激活Pycharm: 编辑hosts文件&am…

二阶矩阵转置怎么求_矩阵求导术(下)

点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容本文承接上篇 https://zhuanlan.zhihu.com/p/24709748,来讲矩阵对矩阵的求导术。使用小写字母x表示标量,粗体小写字母表示列向量,大写字母X表示矩阵。矩阵对矩阵的求…

c语言中x的n次方怎么表示_线性代数的本质及其在人工智能中的应用

线性代数是 AI 专家必须掌握的知识,这已不再是个秘密。如果不掌握应用数学这个领域,你永远就只能是「门外汉」。当然,学习线性代数道阻且长。数学,尤其是线性代数常与枯燥、复杂和毫无意义的事物联系起来。不过你还可以另辟蹊径。…

django 实现电子支付功能

思路:调用第三方支付 API 接口实现支付功能。本来想用支付宝来实现第三方网站的支付功能的,但是在实际操作中发现支付宝没有 Python 接口,网上虽然有他人二次封装的的 Python 接口,但是对我这个小白白来说上手还是有点难度&#x…

android中怎么保存checkbox中的checked属性_第二十四天HTML中的form表单

form表单用于收集用户信息,如:登录、注册等场景;所有要提交的数据都必须放在form标签中action:提交地址、动作,与input标签中typy标签的submit属性相关联。 ,提交地址是action的地址method:提交方法&#x…