Python学习 Day4-2 Python3 File(文件) 方法、 print 函数

Python3 File(文件) 方法

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

序号方法及描述
1

file.close()

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

2

file.flush()

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

3

file.fileno()

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

4

file.isatty()

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

5

file.next()

返回文件下一行。

6

file.read([size])

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

7

file.readline([size])

读取整行,包括 "\n" 字符。

8

file.readlines([sizeint])

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

9

file.seek(offset[, whence])

设置文件当前位置

10

file.tell()

返回文件当前位置。

11

file.truncate([size])

从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后 V 后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。

12

file.write(str)

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

13

file.writelines(sequence)

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

python 文件打开方式(推荐使用with)

python下打开文件超级简单,不用导入任何包,直接输入

f = open('your_file.txt','r')

就可以打开一个文件进行操作。第二个参数为对文件的操作方式,’w’是写文件,已存在的同名文件会被清空,不存在则会创建一个;’r’是读取文件,不存在会报错;’a’是在文件尾部添加内容,不存在会创建文件,存在则直接在尾部进行添加;还有’wb’是写二进制文件;’rb’是读取二进制文件,比如图片之类的。 
但是这种方式其实不是最好的打开文件的方式,这种方式可能会有这样几个问题: 
1、未指定文件编码格式,如果文件编码格式与当前默认的编码格式不一致,那么文件内容的读写将出现错误。 
2、如果读写文件有错误,会导致文件无法正确关闭。因为哪怕在后面有

f.close()

语句,但是如果在打开的时候就出现错误,这种打开方式会出现问题。因此,一般来说,不推荐这种打开文件的方式。(我之前其实一直使用这种方法,,虽然也知道其他的方法,但是嫌麻烦一直没怎么用…)

上面的这些问题都是针对python2的,在python3下open函数可以通过encoding参数指定编码方式,而在2中不可以。 
在python3下可以直接通过这样来打开一个文件:

f = open('your_file.txt', 'r', encoding='utf-8')

下面的两种方式在python2和python3下都可以使用,因此如果想要让你的代码在2和3下都兼容的话可以尝试下面的两种方法:

import codecs
f1 = codecs.open('your_file1.txt', 'r', 'utf-8') #使用codecs包
f1.close()
import io
f2 = io.open('your_file2.txt', 'r', encoding='utf-8') #使用io包
f2.close()

不知道有没有细心的同学发现上面的打开文件的方式都有瑕疵,下面的方法则是用来解决刚才提到的第二个问题的,也是最推荐的一种打开文件的方式

import codecs #或者io,使用哪种包无所谓
with codecs.open('your_file.txt', 'r', 'utf-8') as f:
    f.write('This method is prior')

使用with这种上下文环境的方式打开文件,在对文件操作完成后无需通过close()关闭文件,文件会自动关闭,而且安全系数更高。

python 文件读写模式r,r+,w,w+,a,a+的区别

模式可做操作若文件不存在是否覆盖
r只能读报错-
r+可读可写报错
w只能写创建
w+ 可读可写创建

a  只能写创建否,追加写
a+可读可写创建否,追加写

Python3 File next() 方法

概述

Python 3 中的 File 对象不支持 next() 方法。 Python 3 的内置函数 next() 通过迭代器调用 __next__() 方法返回下一项。 在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发 StopIteration

语法

next() 方法语法如下:

next(iterator[,default])

参数

返回值

返回文件下一行。

实例

以下实例演示了 next() 方法的使用:

#!/usr/bin/python3

# 打开文件
fo = open("runoob.txt", "r")
print ("文件名为: ", fo.name)

for index in range(5):
    line = next(fo)
    print ("第 %d 行 - %s" % (index, line))

# 关闭文件
fo.close()

Python中read()、readline()和readlines()三者间的区别和用法

准备

假设a.txt的内容如下所示:

Hello
Welcome 
What is the fuck... 

一、read([size])方法

read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它返回为字符串对象。

f = open("a.txt")
lines = f.read() 
print lines 
print(type(lines))
f.close() 

输出结果:

Hello 
Welcome 
What is the fuck... 
<type 'str'> #字符串类型 

二、readline()方法

从字面意思可以看出,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。

f = open("a.txt") 
line = f.readline() 
print(type(line)) 
while line:  
    print line,  
    line = f.readline() 
f.close() 

输出结果:

<type 'str'> 
Hello 
Welcome 
What is the fuck... 

三、readlines()方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。

f = open("a.txt") 
lines = f.readlines() 
print(type(lines)) 
for line in lines: 
    print line, 
f.close() 

输出结果:

<type 'list'> 
Hello 
Welcome 
What is the fuck... 

四、linecache模块

当然,有特殊需求还可以用linecache模块,比如你要输出某个文件的第n行:

# 输出第2行 
text = linecache.getline(‘a.txt',2) 
print text, 

 .read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中

.readline() 每次只读取一行,通常比 .readlines() 慢得多,返回一个字符串对象。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。

.readlines() 一次读取整个文件,自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理.

python3 中 print 函数用法总结

输出的 print 函数总结:

1. 字符串和数值类型
可以直接输出

>>> print(1)  
1  
>>> print("Hello World")  
Hello World 

2.变量
无论什么类型,数值,布尔,列表,字典...都可以直接输出

>>> x = 12  
>>> print(x)  
12  
>>> s = 'Hello'  
>>> print(s)  
Hello  
>>> L = [1,2,'a']  
>>> print(L)  
[1, 2, 'a']  
>>> t = (1,2,'a')  
>>> print(t)  
(1, 2, 'a')  
>>> d = {'a':1, 'b':2}  
>>> print(d)  
{'a': 1, 'b': 2}  

3.格式化输出

>>> s  
'Hello'  
>>> x = len(s)  
>>> print("The length of %s is %d" % (s,x))  
The length of Hello is 5 

格式化输出的总结:

(1). %字符:标记转换说明符的开始

(2). 转换标志:-表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充

(3). 最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。

(4). 点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出

(5).字符串格式化转换类型

转换类型          含义

d,i                 带符号的十进制整数
o                   不带符号的八进制
u                   不带符号的十进制
x                    不带符号的十六进制(小写)
X                   不带符号的十六进制(大写)
e                   科学计数法表示的浮点数(小写)
E                   科学计数法表示的浮点数(大写)
f,F                 十进制浮点数
g                   如果指数大于-4或者小于精度值则和e相同,其他情况和f相同
G                  如果指数大于-4或者小于精度值则和E相同,其他情况和F相同
C                  单字符(接受整数或者单字符字符串)
r                    字符串(使用repr转换任意python对象)
s                   字符串(使用str转换任意python对象)

>>> pi = 3.141592653  
>>> print('%10.3f' % pi) #字段宽10,精度3  
     3.142  
>>> print("pi = %.*f" % (3,pi)) #用*从后面的元组中读取字段宽度或精度  
pi = 3.142  
>>> print('%010.3f' % pi) #用0填充空白  
000003.142  
>>> print('%-10.3f' % pi) #左对齐  
3.142       
>>> print('%+f' % pi) #显示正负号  
+3.141593  

4.如何让 print 不换行
在Python中总是默认换行的

>>> for x in range(0,10):  
    print(x)  
  
      
0  
1  
2  
3  
4  
5  
6  
7  
8  
9  

如果想要不换行,之前的 2.x 版本可以这样 print x, 在末尾加上 ,
但在 3.x 中这样不起任何作用
要想换行你应该写成 print(x,end = '' )

>>> for x in range(0,10):  
    print (x,end = '')  
  
      
0123456789  

 

转载于:https://www.cnblogs.com/paulzhang511/p/8760420.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值