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日下午,我校与广东诚飞智能科技有限公司在公共实训中心会议室举行了“工业机器人教学系统”捐赠仪式。广东诚飞智能科技有限公司总经理杨成芳、区域经理杨少杰,学校副校长罗红金、教务科科长冯华以及机电专业组教师代表参加了…

此地钱多人傻速来

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow原文:http://www.wulujia.com/“此地钱多人傻速来”这…

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…

内置函数之sorted,filter,map

# 4,用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb # name[oldboy,alex,wusir] # print(list(map(lambda i:i"_sb",name))) #5,用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾…

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

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

python按行读取文件取消空白行_在Python中读取文件时忽略空行的最简单方法

我将堆栈生成器表达式:with open(filename) as f_in: lines (line.rstrip() for line in f_in) # All lines including the blank ones lines (line for line in lines if line) # Non-blank lines 现在,lines都是非空行。这样你就不用在电话线上打两次…

SQL Server2012如何导出sql脚本并且还原数据库

一 备份数据库 1 选择某一个数据库,右键依次选择:任务》生成脚本; 2 选择要编写脚本的数据库对象,注意此处可以选择特定的数据库对象,我们可以选择我们需要备份的数据表。 3 在当前页面下面第一步选择高级选项&am…

脚本启动慢_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…

JS数组遍历

### 三 数组的遍历( 1 ) for 循环 let ary [a, b, c, d, 12, 3, 4, f]; for (let i 0; i < ary.length; i) { console.log(ary[i]); }( 2 ) for of &#xff08;ES6 &#xff09; let ary [a, b, c, d, 12, 3, 4, f]; for(let item of ary){ console.log(…

python多线程并发写入_Python多线程并发的简单测试

之前也写了一些简单的Python程序&#xff0c;对于多线程的并发一直没有涉及&#xff0c;今天决定先突破一下&#xff0c;把这个部分的内容先快速的掌握&#xff0c;然后在这个基础上细化改进。我的好友冰川擅长Python技术&#xff0c;所以就拿来主义&#xff0c;参考了他的文章…

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

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

CSS 组合选择符

CSS 组合选择符 一、简介 组合选择符说明了两个选择器直接的关系. CSS组合选择符包括各种简单选择符的组合方式。 在 CSS3 中包含了四种组合方式: 后代选择器(以空格分隔)子元素选择器(以大于号分隔&#xff09;相邻兄弟选择器&#xff08;以加号分隔&#xff09;普通兄弟选择器…

python爬取知乎live_python爬虫——xml数据爬取

回想去年写毕业论文时候需要数据&#xff0c;虽然数据量不大&#xff0c;但是手工录入&#xff0c;也是颇费眼神。现在自学了Python&#xff0c;就拿曾经的需求当做案例吧&#xff01; 爬取目标&#xff1a;最近20年每个月的仔猪价格&#xff0c;生猪价格和猪肉价格 爬取软件&a…

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

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

linux下查看内存使用情况

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

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

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

python 创建类_python 用type()创建类

type()可以查看一个类型&#xff0c;也可以查看变量的类型class Hello1(object):def hello(self, name world):print(Hello, %s % name)h1 Hello1()h1.hello()print(type(Hello1))print(type(h1))输出&#xff1a;Hello, world#Hello是一个class&#xff0c; 它的类型就是typ…