人生苦短,我用python(三)

1.文件

1.1 从文件中读取数据

文本文件中可存储的数据量多的难以置信:天气数据、交通数据、社会经济数据、文学作品等。每当需要分析或修改存储在文件中的信息时,读取文件都很有用,对数据分析应用程序来说尤其如此。

要使用文本文件中的信息。首先需要将信息读取到内存中。为此,你可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。

1.1.1 读取整个文件

要读取文件,需要一个包含几行文本的文件。首先假如我们拥有以下文件:

song_digits.txt

8.3254585665
1565649795
1596324785

将文件保存到你要使用的程序目录。

下面的程序打开并读取这个文件,再将其内容显示到屏幕上:
方法一

with open('song_digits.txt') as f :
	contents = f.read( )
	print(contents)

方法二

f = open('song_digits.txt')
contents = f.read( )
print(contents)
f.close

我们拥有两种读取文件的方法,第一种方法与第二种方法的区别是,第一种方法不用执行f.close( )这行代码。

在这两个程序中,第一行代码都做了大量的工作。我们先来看看函数open( )。要以任何方式使用文件——哪怕仅仅是打印其内容,都得先打开文件,这样才能访问他。函数open( )只接受一个参数:要打开的文件名称。python在当前执行的py文件所在的目录中查找指定的文件,或者在open( )函数中写入绝对路径,找到读取文件。函数open( )返回一个表示文件的对象;python将这个对象存储在我们后面将要使用的变量中

关键字with在不再需要访问文件时将他自动关闭。在这个程序中,注意我们调用了open(),但没有调用close( );你也可以调用open( )和 close( )来打开关闭文件,但这样做时,如果程序存在bug,导致close语句未执行,文件将不会关闭。这看似微不足道,但未妥善关闭文件可能会导致数据丢失或受损。如果在程序中过早的调用close(),你会发现使用文件时他已经关闭,这会导致更多的错误。并非任何情况下都能轻松的确定关闭确定关闭文件的恰当时机,但是通过with结构,我们可以让python确定:你只管打开文件在需要时使用它,python会在合适的时候自动将其关闭。

有了表示song_digits.txt的对象后,我们使用方法read( ),读取文件的全部内容,并将其作为长长的字符串储存在变量contents中,这样通过打印contents这个值就可将这个文本文件的全部内容显示出来。

我们在输出文件时,唯一不同的地方是末尾多了一个空行。位和会多出一个空行?因为read()在到达文件末尾时会返回一个空字符串,而将这个空字符串显示出来就是一个空行,要删除多与的空行我们可以在print语句中使用rstrip( ):

print(contents.rstrip())

这样输出内容就与源是文件内容相同了。

1.1.2 文件路径

我们在执行一个打开一个文件时,如果你只写入了一个文件名,而刚好你要打开的文件不再你要操作的目录中,这样你打开的文件,就不正确。所以我们可以在open( )函数中写入绝对路径,例如linux’或者OS X中

with open('/home/kiosk/text_file/filename.txt') as f:

或者

file_path = '/home/kiosk/text_file/filename.txt'
with open(file_path) as f:

在Window中使用:

with open('C:\Users\ehmatthes\other_files\text_file\filename.txt') as f:

或者

file_path = 'C:\Users\ehmatthes\other_files\text_file\filename.txt'
with open(file_path) as f:

1.1.3 逐行读取

读取文件时,常常需要检查其中的每一行。要以每次以行的方式检查文件,可对文件对象使用for循环:
file_read.py

filename = 'song_digits.txt'

with open(filename) as f:
	for line in f:
		print(line)

这时候我们发现打印每一行的时,发现空白行更多了,这是因为在每一行的末尾都有一个看不见的换行符,而print语句也会加哈桑一个换行符,因此每行末尾都有两个换行符:一个来自文件,另一个来自print语句。要消除这些多与的空白行,可在语句中使用rstrip()

filename = 'song_digits.txt'

with open(filename) as f:
	for line in f:
		print(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值