当前位置:   article > 正文

【Python学习】从文件中读取数据_python在文件中查找指定数据

python在文件中查找指定数据
  1. # _*_ coding:utf-8 _*_
  2. """
  3. name:zhangxingzai
  4. date:
  5. form:《Python编程从入门到实践》
  6. """
10.1.1 读取整个文件
要读取文件,需要一个包含几行文本的文件。下面首先来创建一个文件,它包含精确到小数
点后30位的圆周率值,且在小数点后每10位处都换行:
pi_digits.txt
3.1415926535 
  8979323846 
  2643383279
下面的程序打开并读取这个文件,再将其内容显示到屏幕上:
  1. with open('pi_digits.txt') as pi:
  2. contents = pi.read()
  3. print(contents)
函数open()接受一个参数:
要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。
关键字with在不再需要访问文件后将其关闭
当然不使用with语句,你也可以调用open()和close()来打开和关闭文件
相比于原始文件,该输出唯一不同的地方是末尾多了一个空行
3.1415926535
  8979323846
  2643383279

为何会多出这个空行呢?因
为read()到达文件末尾时返回一个空字符串,而将这个空字符串显示出来时就是一个空行。要删
除多出来的空行,可在print语句中使用rstrip()
方法rstrip()删除(剥除)字符串末尾的空白
  1. with open('pi_digits.txt', ) as pi:
  2. contents = pi.read()
  3. print(contents.rstrip())
现在,输出与原始文件的内容完全相同:
3.1415926535
  8979323846
  2643383279
10.1.2 文件路径
要让Python打开不与程序文件位于同一个目录中的文
件,需要提供文件路径,它让Python到系统的特定位置去查找。
由于文件夹text_files位于文件夹python_work中,因此可使用相对文件路径来打开该文件夹中
的文件。相对文件路径让Python到指定的位置去查找,而该位置是相对于当前运行的程序所在目
录的。在Linux和OS X中,你可以这样编写代码:
  1. with open('text_files/filename.txt') as file_object:
  2. pass
这行代码让Python到文件夹python_work下的文件夹text_files中去查找指定的.txt文件。在
Windows系统中,在文件路径中使用反斜杠(\)而不是斜杠(/):
  1. with open('text_files\filename.txt') as file_object:
  2. pass
  3. # 防止转义可以写成
  4. with open(r'text_files\filename.txt') as file_object:
  5. pass
你还可以将文件在计算机中的准确位置告诉Python,这样就不用关心当前运行的程序存储在
什么地方了。这称为绝对文件路径。
绝对路径通常比相对路径更长,因此将其存储在一个变量中,再将该变量传递给open()会有
所帮助。在Linux和OS X中,绝对路径类似于下面这样:
  1. file_path = '/home/ehmatthes/other_files/text_files/filename.txt'
  2. with open(file_path) as file_object:
  3. pass
  4. # 而在Windows系统中,它们类似于下面这样:
  5. file_path = r'C:\Users\ehmatthes\other_files\text_files\filename.txt'
  6. with open(file_path) as file_object:
  7. pass
10.1.3 逐行读取
读取文件时,常常需要检查其中的每一行:你可能要在文件中查找特定的信息,或者要以
某种方式修改文件中的文本。
要以每次一行的方式检查文件,可对文件对象使用for循环:
  1. filename = 'pi_digits.txt'
  2. with open(filename) as file_object:
  3. for line in file_object:
  4. print(line.rstrip())
10.1.4 创建一个包含文件各行内容的列表
使用关键字with时,open()返回的文件对象只在with代码块内可用。如果要在with代码块外
访问文件的内容,可在with代码块内将文件的各行存储在一个列表中,并在with代码块外使用该
列表:
  1. filename = 'pi_digits.txt'
  2. with open(filename) as file_object:
  3. lines = file_object.readlines()
  4. # readlines()从文件中读取每一行,并将其存储在一个列表中
  5. for line in lines:
  6. print(line.rstrip())
10.1.5 使用文件的内容
将文件读取到内存中后,就可以以任何方式使用这些数据了。下面以简单的方式使用圆周率
的值。首先,我们将创建一个字符串,它包含文件中存储的所有数字,且没有任何空格:
  1. filename = 'pi_digits.txt'
  2. with open(filename) as file_object:
  3. lines = file_object.readlines()
  4. pi_string = ''
  5. for line in lines:
  6. pi_string += line.rstrip()
  7. print(pi_string)
  8. print(len(pi_string))
3.1415926535  8979323846  2643383279
36

在变量pi_string存储的字符串中,包含原来位于每行左边的空格,为删除这些空格,
可使用strip()而不是rstrip():
  1. filename = 'pi_digits.txt'
  2. with open(filename) as file_object:
  3. lines = file_object.readlines()
  4. pi_string = ''
  5. for line in lines:
  6. pi_string += line.strip()
  7. print(pi_string)
  8. print(len(pi_string))
3.141592653589793238462643383279
32

10.1.6 圆周率值中包含你的生日吗
  1. filename = 'pi_digits.txt'
  2. with open(filename) as file_object:
  3. lines = file_object.readlines()
  4. pi_string = ''
  5. for line in lines:
  6. pi_string += line.strip()
  7. birthday = input("请输入您的生日,如20220202: ")
  8. if birthday in pi_string:
  9. print('您的生日存在于圆周率中')
  10. else:
  11. print('圆周率中未匹配到您的生日')

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/319364
推荐阅读
相关标签
  

闽ICP备14008679号