Python基础入门知识(10)

接前面的文章:
Python基础入门知识(1)
Python基础入门知识(2)
Python基础入门知识(3)
Python基础入门知识(4)
Python基础入门知识(5)
Python基础入门知识(6)
Python基础入门知识(7)
Python基础入门知识(8)
Python基础入门知识(9)

2 Python的基础知识

2.15 文件和异常

2.15.1 从文件中读取数据

2.15.1.6 包含一百万位的大型文件

前面我们分析的都是一个只有三行的文本文件,但这些代码示例也可处理大得多的文件。如果我们有一个文本文件,其中包含精确到小数点后1000000位而不是30位的圆周率值,也可创建一个包含所有这些数字的字符串。为此,我们无需对前面的程序做任何修改,只需将这个文件传递给它即可。在这里,我们只打印到小数点后50位,以免终端为显示全部1000000位而不断地翻滚:
pi_string.py

filename = 'pi_million_digits.txt'
with open(filename) as file_object:
    lines = file_object.readlines()
pi_string = ''
for line in lines:
    pi_string += line.strip()
print(pi_string[:50]+"...")
print(len(pi_string))

输出表明,我们创建的字符串确实包含精确到小数点后1000000位的圆周率值:

3.141592653589793238462643383279502884197169399375...
1000002

对于我们可处理的数据量,Python没有任何限制;只要系统的内存足够多,我们想处理多少数据都可以。

2.15.1.7 圆周率值中包含我们的生日吗

我一直想知道自己的生日是否包含在圆周率值中。下面来扩展刚才编写的程序,以确定某个人的生日是否包含在圆周率值的前1000000位中。为此,可将生日表示为一个由数字组成的字符串,再检查这个字符串是否包含在pi_string中:

filename = 'pi_million_digits.txt'
with open(filename) as file_object:
    lines = file_object.readlines()
pi_string = ''
for line in lines:
    pi_string += line.strip()
birthady = input("Enter your birthday, in the form mmddyy: ")
if birthady in pi_string:
    print("Your birthday appears in the first million digits of pi!")
else:
    print("Your birthday does not appear in the first million digits of pi.")

在❶处,我们提示用户输入其生日,在接下来的❷处,我们检查这个字符串是否包含在pi_string中。运行一下这个程序:

Enter your birthday, in the form mmddyy: 1222
Your birthday appears in the first million digits of pi!

我的生日确实出现在了圆周率值中!读取文件的内容后,就可以以我们能想到的任何方式对其进行分析。

2.15.2 写入文件

保存数据的最简单的方式之一是将其写入到文件中。通过将输出写入文件,即便关闭包含程序输出的终端窗口,这些输出也依然存在:我们可以在程序结束运行后查看这些输出,可与别人分享输出文件,还可编写程序来将这些输出读取到内存中并进行处理。

2.15.2.1 写入空文件

要将文本写入文件,我们在调用open()时需要提供另一个实参,告诉Python我们要写入打开的文件。为明白其中的工作原理,我们来将一条简单的消息存储到文件中,而不是将其打印到屏幕上:
write_message.py

filename = 'programming.txt'
with open(filename, 'w') as file_object: ❶
    file_object.write("I love programming.")

在这个示例中,调用open()时提供了两个实参(见❶)。第一个实参也是要打开的文件的名称;第二个实参(‘w’)告诉Python,我们要以写入模式打开这个文件。打开文件时,可指定读取模式(‘r’)、写入模式(‘w’)、附加模式(‘a’)或让我们能够读取和写入文件的模式(‘r+’)。如果我们省略了模式实参,Python将以默认的只读模式打开文件。
如果我们要写入的文件不存在,函数open()将自动创建它。然而,以写入(‘w’)模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。
在❷处,我们使用文件对象的方法write()将一个字符串写入文件。这个程序没有终端输出,但如果我们打开文件programming.txt,将看到其中包含如下一行内容:
programming.txt

I love programming.

相比于我们的计算机中的其他文件,这个文件没有什么不同。我们可以打开它、在其中输入新文本、复制其内容、将内容粘贴到其中等。

  • 注意 Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式。
2.15.2.2 写入多行

函数write()不会在我们写入的文本末尾添加换行符,因此如果我们写入多行时没有指定换行符,文件看起来可能不是我们希望的那样:

filename = 'programming.txt'
with open(filename, 'w') as file_object:
    file_object.write("I love programming.")
    file_object.write
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值